Главная/Статьи/Laravel: Сортировка по количеству комментариев
Laravel

Laravel: Сортировка по количеству комментариев

Статья посвящена реализации сортировки записей в Laravel по числу связанных комментариев. Задача — организовать сортировку статей по популярности, где популярность определяется количеством комментариев.

Настройка связи моделей

Предполагается наличие двух моделей: Node для статей и Comment для комментариев. Связь между ними устанавливается методом hasMany():

class Node extends Model
{
    public function comments()
    {
        return $this->hasMany('App\\Comment', 'comment_post_ID', 'id');
    }
}

Реализация в контроллере

Базовый вариант с использованием метода withCount():

Node::withCount('comments')->orderBy('comments_count', 'desc');

Расширенный пример с фильтрацией и пагинацией:

$nodes = Node::withCount('comments')
    ->orderBy('comments_count', 'desc')
    ->where('status', 'publish')
    ->paginate(12);

return view('articles')->with('nodes', $nodes);

Вывод

Метод withCount() позволяет элегантно выполнять сортировку по связанным моделям в Laravel без написания сложных raw-запросов к базе данных.