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

How to sort users by max number of posts in Laravel

我想按帖子数对所有用户进行排序。喜欢:

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

如何在 laravel elequont 关系中执行此操作。

你可以这样做:

$users = User::with('posts')->get()-
>sortBy(function($users)
{
return $users->posts->count();
});

试试这个:

$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();

使用 withCount 在不加载关系的情况下获取帖子计数,并使用 posts_count 对结果进行排序。如果需要,您还可以应用附加条件。作为奖励,您可以获得每个用户的帖子数。

$users = User::withCount('posts')
    ->orderBy('posts_count', 'desc')
    ->get();