[英]Get results from model, order by sum of columns
在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');
您可以尝试以下查询:
$users = User::take(10)
->select('users.*', DB::raw('(Rank_a+Rank_b+Rank_c) AS total_points'))
->orderBy('total_points', 'desc')
->get();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.