Запрос на связанные модели с использованием Laravel 4 и Eloquent

Используя Laravel 4, у меня есть следующие модели и отношения: Событие, которое имеет запись Many, имеющая hasMany Item. То, что я хотел бы сделать, это нечто подобное

Item::where('events.event_type_id', 2)->paginate(50); 

Эта причина не работает, поскольку Eloquent не присоединяется к моделям вместе при получении записей. Итак, как мне обойти это, просто не написав сам SQL (чего я бы хотел избежать, поскольку хочу использовать разбивку на страницы).

То, что вы хотите, – это нетерпеливая загрузка .

Он работает так, если вы хотите указать дополнительные ограничения:

 Item::with(array('events' => function($query) { return $query->where('event_type_id', 2); }))->paginate(50); 

Запрос на растяжение ожидается здесь https://github.com/laravel/framework/pull/1951 .

Это позволит вам использовать ограничение на метод has (), что-то вроде этого:

 $results = Foo::has(array('bars' => function($query) { $query->where('title', 'LIKE', '%baz%'); })) ->with('bars') ->get(); 

Идея заключается в том, что вы возвращаете только Foos, которые имеют связанные бары, которые содержат строку «baz» в столбце заголовка.

Это также обсуждается здесь: https://github.com/laravel/framework/issues/1166 . Надеюсь, он скоро будет объединен. Прекрасно подходит для меня, когда я обновляю локальную копию класса Builder с обновленным кодом в запросе pull.