如何按 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();
我想按帖子数对所有用户进行排序。喜欢:
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();