我想按照帖子的数量对所有用户进行排序。像:
User1(100 posts)
User2(90 posts)
User3(80 posts)
我怎样才能在laravel elequont关系中这样做。
答案 0 :(得分:2)
使用withCount
获取帖子数而不加载关系,并使用posts_count
对结果进行排序。如果需要,您还可以应用其他条件。作为奖励,您可以获得每个用户的帖子数量。
$users = User::withCount('posts')
->orderBy('posts_count', 'desc')
->get();
答案 1 :(得分:1)
试试这个:
$data = User::select(DB::raw('users.*, count(*) as total_posts'))
->join('posts', 'users.id', '=', 'posts.user_id')
->groupBy('user_id')
->orderBy('total_posts', 'desc')
->get();
答案 2 :(得分:0)
你可以这样做:
$users = User::with('posts')->get()-
>sortBy(function($users)
{
return $users->posts->count();
});