Laravel Eloquent-来自相关数据的多个记录的列值的总和

时间:2019-03-04 13:43:07

标签: laravel eloquent

我有以下模型:用户,订单,OrderPayment

每个用户有很多订单,每个订单有很多订单付款。

orderPayment模型具有“ total_paid”属性

我想获得用户为所有订单支付的总金额。

例如: 用户有3个订单。

  • 第一笔订单有以下两个付款记录:5 $和4 $。

  • 第二个订单的付款为10 $

  • 第三订单有两个付款记录,分别为1 $和4 $

我想要的总金额是5 + 4+ 10+ 1+ 4 = 24 $。

我已经尝试了以下方法,但是根本没有用:

$user->orders->orderpayment->sum('total_paid');

但是我得到这个错误

  

此集合实例上不存在属性[orderPayment]

2 个答案:

答案 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');