2016-11-17 4 views
2

У меня есть две таблицы с сводной таблицыLaravel Формирователь запросов с поворотным столом

Таблица tours

id | name | country_id | featured

Таблица countries

id | name

Сводная таблица country_tour

id | country_id | tour_id

Я хочу, чтобы найти тур, который имеет featured столбец таблицы туров устанавливается в 1 и country_id из country_tour таблицы установлен в 1.

+0

что вы пытаетесь предоставить. –

+0

Ваше отношение выглядит так: «В стране много туров», а «Тур имеет много стран» ?? –

ответ

2

Обновлено:

Вы можете сделать это например, используя запрос Laravel Builder метод - whereHas():

Ваши модели должны выглядеть так: от многих до многих отношений:

Tour Модель:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Tour extends Model 
{ 
    public function countries() { 
     return $this->belongsToMany('App\Country'); 
    } 
} 

и Страна Модель

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Country extends Model 
{ 
    public function tours() { 
     return $this->belongsToMany('App\Tour'); 
    } 
} 

и теперь вы можете получить желаемые результаты, используя приведенный ниже запрос:

Tour::where('featured', 1) 
    ->whereHas('countries', function($q) { 
     $q->where('id', 1); 
    }) 
    ->get(); 

Это поможет вам сбор туров с и с country with id = 1.

Надеюсь, это поможет!

+0

Спасибо, помощник за быстрый ответ. Код бежал без ошибок после нескольких tweks, я изменил id на country_id в функции, поскольку это вызывало ошибку. Но код не извлекал данные из db. –

+0

Откажитесь от меня, поскольку я обновляю свой ответ в ближайшее время ... –

+0

И также меняю страны на страну, так как название моего метода - страна. –