在 Laravel 5.3 中,我有一个用户模型。我想在我的服务器上拥有排名最高的 10 个用户。排名基于 Rank_a
、Rank_b
和 Rank_c
列的总和。我该怎么做?
这是我目前的代码:
$users = User::take(10)
->select(DB::raw('sum(Rank_a+Rank_b+Rank_c) AS total_points'))
->orderBy('total_points')
->get();
return response()->json($users);
最佳答案
您应该在select()
中指定要获取的列。另外,既然你想获得排名最高的用户,你应该按降序对他们进行排序。
假设您需要获取列 id
和 username
:
$users = User::select(
DB::raw('id, username, Rank_a + Rank_b + Rank_c AS total_points')
)->orderBy('total_points', 'desc')->take(10)->get();
如果要获取所有列:
$users = User::select(
DB::raw('users.*, Rank_a + Rank_b + Rank_c AS total_points')
)->orderBy('total_points', 'desc')->take(10)->get();
如果你只想得到一个包含一列的数组,比如 id
:
$users = User::select(
DB::raw('id, Rank_a + Rank_b + Rank_c AS total_points')
)->orderBy('total_points', 'desc')->take(10)->pluck('id');
关于php - 从模型中获取结果,按列总和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40951346/