Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从模型中获取结果,按列和排序_Php_Mysql_Laravel_Laravel 5_Laravel 5.3 - Fatal编程技术网

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

Php 从模型中获取结果,按列和排序,php,mysql,laravel,laravel-5,laravel-5.3,Php,Mysql,Laravel,Laravel 5,Laravel 5.3,在Laravel5.3中,我有一个用户模型。我想在我的服务器上拥有排名最高的10个用户。排名基于Rank\u a、Rank\u b和Rank\u c列的总和。我该怎么做 这是我目前掌握的代码: $users = User::take(10) ->select(DB::raw('sum(Rank_a+Rank_b+Rank_c) AS total_points')) ->orderBy('total_points') ->get()

在Laravel5.3中,我有一个用户模型。我想在我的服务器上拥有排名最高的10个用户。排名基于
Rank\u a
Rank\u b
Rank\u 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);

您可以尝试以下查询:

$users = User::take(10)
            ->select('users.*', DB::raw('(Rank_a+Rank_b+Rank_c) AS total_points'))
            ->orderBy('total_points', 'desc')
            ->get();

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

此查询是否未返回预期结果?否,返回空响应:
[[]]