@IceJOKER
Web/Android developer

Как сортировать по полю связанной таблицы в laravel?

Есть модели - Post | Comment
Связанны соответственно как Post.hasMany и Comment.belongsTo, как можно вывести все Post отсортированные по количеству комментариев ?

+постраничная навигация нужна
  • Вопрос задан
  • 3306 просмотров
Пригласить эксперта
Ответы на вопрос 3
greabock
@greabock
Могу
Вы пытаетесь выбрать пост с комментариями.
Вам нужны комментарии? Так и выбирайте комментарии.
Comment::whereHas('post', function( $query ) use ($id) {
        $query->whereId($id);
})->orderBy('created_at')->paginate(0, 15);

Иначе, с порядком вывода может и можно справится, но не с постраничным разбиением.
Ответ написан
Попробуйте вот так:

$posts = Post::with('comments')
            ->join('comments', 'comments.post_id', '=', 'posts.id')
            ->select('posts.*', 'comments.*')
            ->groupBy('posts.id')
            ->orderBy(DB::raw('COUNT(`posts`.`id`)'), 'asc')
            ->paginate(10);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы