如何使用Eloquent计算comments
中post
的数量,并按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))
的内容;
答案 0 :(得分:4)
您可以使用withCount
检索关系计数,并使用orderBy(*_count)
对其进行排序。像,
Post::withCount('comments')->orderBy('comments_count', 'desc')->get()