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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel Eloquent - 来自相关数据的多个记录的列值的总和相关的知识,希望对你有一定的参考价值。

我有以下型号:用户,订单,订单付款

每个订单都有很多订单,每个订单都有很多订单付款。

orderPayment模型具有属性“total_paid”

我想得到用户所有订单总额的总和。

例如:用户有3个订单。

  • 第一个订单有以下两个付款记录:5 $和4 $。
  • 第二个订单有一个10美元的付款
  • 第三个订单有两个支付记录1 $和4 $

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

我尝试了以下但它根本不起作用:

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

但我得到这个错误

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

答案

由于您想要对OrderPayment模型中的值求和,因此从那里开始更容易。尝试这样写:

OrderPayment::whereHas('order.user', function($query) use ($userId) 
    $query->whereId($userId);
)->sum('total_paid');

确保所有关系都定义良好。

另一答案

尝试:

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

以上是关于Laravel Eloquent - 来自相关数据的多个记录的列值的总和的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel Eloquent 中添加相关的聚合数据?

Laravel Eloquent - 保存/更新相关的一对多关系数据

Laravel 5.2 pluck() 来自 Eloquent 模型集合的多个属性

相关模型 eloquent laravel 中的自定义查询

来自 SQL 的 Laravel Eloquent ORM 聚合函数

laravel 基础教程 —— Eloquent