У меня есть модельное сообщение, которое имеет отношение 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)
});
так как это просто не работает
Я абсолютно уверен, что я не единственный, кто столкнулся с этой проблемой, и мне удалось найти несколько «попыток решения», но это не стабильный пример рабочего кода. Может кто-нибудь помочь, пожалуйста?
Попробуй это:
Допустим, вы определили отношение «комментарии» в своей модели Post. вот как вы можете принять все комментарии, относящиеся к этому:
App\Post::all()->comments()->orderBy('comments.created_at')->take(1)->get();
Других решений пока нет …