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

标签 php mysql laravel laravel-5 laravel-5.3

在 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');

关于php - 从模型中获取结果,按列总和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40951346/

相关文章:

mysql - Qt 使用数据库检查登录

php - Laravel 5.2 登录 session 不持久

php - Laravel 一页上有多个可排序表格

php - 如何解码电子邮件中的主题?

php - 使用PDO搜索数据库

php - Shell 运行/执行带参数的 php 脚本

php - Paypal响应码——如何正确处理

php - Foreach 循环不根据列名回显正确的文本

java - Hibernate 一对一保存对象

mysql - laravel 两个相同的 ownTo() 关系,一个返回数组,另一个返回字符串