2016-12-21 2 views
1

Я использую Laravel's (5.3) Eloquent ORM и пытаюсь фильтровать с помощью сводной таблицы. У меня три таблицы: events, supervisors и event_has_supervisors. Теперь я просто хочу, чтобы все события назначались определенному супервизору.Использовать Яркость для фильтрации по сводной таблице в Laravel 5.3

В моей модели событий я получил это:

public function supervisors() { 
    return $this->belongsToMany(Supervisor::class, 'event_has_supervisors')->withPivot('hours'); 
} 

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

$events = Event::with($relations); 
// This works well: get all Events in one or more given cities 
$events = $events->whereIn('events.place_id', $cities); 
// This does not work 
$events = $events->whereIn('events.supervisor_id', $supervisors); 

Очевидно, что последнее, где придаточного Безразлично 't работать, потому что такого атрибута в моей таблице событий нет. Но как я могу запросить свою сводную таблицу в этом случае? Я хочу, чтобы любой из супервизоров, назначенных на мероприятие, был одним из руководителей в $supervisors.

ответ

2

Вы можете использовать whereHas как:

$events = $events->whereHas('supervisors', function($q) use($supervisors) { 
    $q->whereIn('supervisor_id', $supervisors); 
}); 
+1

Работал отлично, спасибо. Единственное, что мне пришлось внести, это столбец «supervisor_id», потому что я использую его в обеих таблицах и получил ошибку «неоднозначное имя столбца». – user1068464

Смежные вопросы