Как достать посты с комментариями Laravel 4?

Нужно достать записи с комментариями по типу как ВК. Тоесть В цикле выводятся посты и к ним по 3 последних комментария. Делаю так:
В модели Posts:
public function lastcomments()
    {
        return $this->hasMany('Comment')->orderBy('created_at','DESC')->limit(3);
    }

И сам запрос:
$arr = array(1,2,3 ...)
Post::whereIn('id',$arr)->orderBy('id', 'desc')->with("lastcomments")->get();


Но этот код достает последние 3 коммента не к каждой записи, а для всех . Тоесть если я вывожу 10 постов, то должно выбраться теоретически 30 комментов, а выбирается только 3.
  • Вопрос задан
  • 2327 просмотров
Пригласить эксперта
Ответы на вопрос 2
При активной загрузке вы этого не сделаете.
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Я был неправ, приношу свои извинения.
Это принципиальное ограничение для eager loading, и текущее поведение - это единственное, что он может дать. То есть, смысла использовать hasMany тут нету.

То есть, комментарии надо получать отдельными запросами, по числу постов, что возвращает нас к предыдущей задаче про денормализацию. Хотя я бы не торопился её делать, поскольку 20 запросов по индексу базу не нагрузят.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы