Ограничение отношений в Laravel

У меня есть модельное сообщение, которое имеет отношение hasMany («Комментарии»). Я хотел бы получить все сообщения с отношением Комментарии, но только последний комментарий для каждого сообщения. И поскольку существуют тысячи постов с тысячами комментариев в каждом, такая опция невозможна из-за проблем с производительностью (то есть загрузка всех комментариев для каждого поста и затем выполнение $ post-> comments [0] -> value):

Post::with('comments' => function($query){
$query->orderBy('created_at','desc')
});

И я не могу сделать:

Post::with('comments' => function($query){
$query->orderBy('created_at','desc')->limit(1)
});

так как это просто не работает

Я абсолютно уверен, что я не единственный, кто столкнулся с этой проблемой, и мне удалось найти несколько «попыток решения», но это не стабильный пример рабочего кода. Может кто-нибудь помочь, пожалуйста?

6

Решение

Попробуй это:
Допустим, вы определили отношение «комментарии» в своей модели Post. вот как вы можете принять все комментарии, относящиеся к этому:

App\Post::all()->comments()->orderBy('comments.created_at')->take(1)->get();
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]