如何按Laravel中的最大帖子数排序用户

时间:2017-05-25 11:37:30

标签: laravel laravel-5 laravel-5.2

我想按照帖子的数量对所有用户进行排序。像:

User1(100 posts)
User2(90 posts)
User3(80 posts)

我怎样才能在laravel elequont关系中这样做。

3 个答案:

答案 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();
});