我有以下模型:用户,订单,OrderPayment
每个用户有很多订单,每个订单有很多订单付款。
orderPayment模型具有“ total_paid”属性
我想获得用户为所有订单支付的总金额。
例如: 用户有3个订单。
第一笔订单有以下两个付款记录:5 $和4 $。
第二个订单的付款为10 $
第三订单有两个付款记录,分别为1 $和4 $
我想要的总金额是5 + 4+ 10+ 1+ 4 = 24 $。
我已经尝试了以下方法,但是根本没有用:
$user->orders->orderpayment->sum('total_paid');
但是我得到这个错误
此集合实例上不存在属性[orderPayment]
答案 0 :(得分:2)
由于您要对OrderPayment模型中的值求和,因此从此处开始更容易。尝试这样写:
OrderPayment::whereHas('order.user', function($query) use ($userId) {
$query->whereId($userId);
})->sum('total_paid');
确保所有关系都定义正确。
答案 1 :(得分:-2)
尝试:
$user->orders->orderpayment()->sum('total_paid');