繁体   English   中英

从模型中获取结果,按列总和排序

[英]Get results from model, order by sum of columns

在Laravel 5.3中,我有一个用户模型。 我希望在我的服务器上拥有排名最高的10位用户。 该排名是基于列的总和Rank_aRank_bRank_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()指定要获取的列。 此外,由于您希望获得排名最高的用户,因此您应该按降序排序。

假设您需要获取列idusername

$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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM