我有一个users
表,其中包含
id
,username
,password
我还有一个带有列
的orders
表
id
,user_id
,price
,status
在index
的{{1}}方法中,我想根据用户的购买量订购我的用户。每个用户的购买量可以作为订单的UsersController
等于用户price
的所有订单的user_id
之和以及{此类订单的{1}}等于id
订单状态的限制是因为用户可以取消我系统中的订单,因此我只想查询尚未取消的订单。
基本上,我希望根据他们购买的总金额获取所有用户的列表。我还想对结果进行分页
我尝试根据以下查询获取用户。我使用order.status
因为并非所有用户都订购了。
4
但我仍然遇到错误。
根据我的模型,我可以使用诸如
之类的查询来获取特定用户的所有购买leftJoin
感谢您的帮助
答案 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);