Laravel OrderBy комментарии в постах
У меня есть таблицы постов и комментариев, где, конечно, комментарии принадлежат постам. Я хочу отсортировать посты с красноречивым количеством комментариев. Как я могу сделать это в Laravel?
Я пытался заказать по дате, используя:
Post::orderBy('created_at', 'DESC')->paginate(6);
Я хочу то же самое, но сортировка по комментариям с другой базой данных, но они связаны в модели.
РЕДАКТИРОВАТЬ:
Я в конечном итоге теперь с этим запросом:
$post = Post::
join('comments', 'comments.post_id' , '=', 'posts.id')
->groupBy('posts.id')
->orderBy(DB::raw('COUNT(posts.id)'))
->paginate(6);
{{$ post-> author}} работает... но я не могу получить, например, {{ $post->comment->count()}} из blade-сервера. В моем предыдущем запросе (выше) это работает. не знаю почему.
1 ответ
Этот ответ помогает.
Вы должны быть в состоянии использовать
Collection
"ssortBy()
а такжеcount()
методы сделать это довольно легко.
$hackathons = Hackathon::with('participants')->get()->sortBy(function($hackathon)
{
return $hackathon->participants->count();
});