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"s sortBy() а также count() методы сделать это довольно легко.

$hackathons = Hackathon::with('participants')->get()->sortBy(function($hackathon)
{
    return $hackathon->participants->count();
});
Другие вопросы по тегам