Php 从模型中获取结果,按列和排序
在Laravel5.3中,我有一个用户模型。我想在我的服务器上拥有排名最高的10个用户。排名基于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()
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');
此查询是否未返回预期结果?否,返回空响应:
[[]]