如何根据相关表中列的总和来排序一个表的查询

时间:2015-07-31 22:07:47

标签: sql laravel laravel-4 eloquent

我有一个users表,其中包含

idusernamepassword

我还有一个带有列

orders

iduser_idpricestatus

index的{​​{1}}方法中,我想根据用户的购买量订购我的用户。每个用户的购买量可以作为订单的UsersController等于用户price的所有订单的user_id之和以及{此类订单的{1}}等于id

订单状态的限制是因为用户可以取消我系统中的订单,因此我只想查询尚未取消的订单。

基本上,我希望根据他们购买的总金额获取所有用户的列表。我还想对结果进行分页

试验

我尝试根据以下查询获取用户。我使用order.status因为并非所有用户都订购了。

4

但我仍然遇到错误。

根据我的模型,我可以使用诸如

之类的查询来获取特定用户的所有购买
leftJoin

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

这个纯SQL看起来像这样:

class << self

答案 1 :(得分:0)

 ->groupBy('orders.user_id')

您应该按users.id分组,因为如果用户没有下订单,orders.user_id将为空。

答案 2 :(得分:0)

经过一些试验后,我得到了一个简单的解决方案

$users = User::leftJoin('orders', 'orders.user_id', '=', 'users.id')
     ->select('users.*', DB::raw( 'sum( orders.price ) as `total_purchase`' ) )
     ->groupBy('users.id')
     ->orderBy('total_purchase', 'DSC')
     ->paginate(10);