通过与Laravel和Eloquent的关系来统计和排序

时间:2017-05-27 23:36:17

标签: database laravel eloquent relationship

如何使用Eloquent计算commentspost的数量,并按posts的数量排序comments

我的代码是这样的:

class Post extends Model
{
    protected $table = 'posts';

    public function comments()
    {
        return $this->hasMany('App\Comment');
    }
}

我需要以优雅的方式检索按评论数量排序的帖子集合,因此我不希望使用类似DB::select(select count(comment.post_id), post.id from posts left join comments on posts.id = comments.post_id group by post.id order by count(post.id))的内容;

1 个答案:

答案 0 :(得分:4)

您可以使用withCount检索关系计数,并使用orderBy(*_count)对其进行排序。像,

Post::withCount('comments')->orderBy('comments_count', 'desc')->get()