【问题标题】:Laravel Eloquent - Sum of a column values for multiple records from related dataLaravel Eloquent - 来自相关数据的多条记录的列值总和
【发布时间】:2019-03-04 13:43:07
【问题描述】:

我有以下模型:User、Order、OrderPayment

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

orderPayment 模型具有属性“total_paid”

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

例如: 用户有 3 个订单。

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

  • 第二个订单有一次支付10美元

  • 第三个订单有1$和4$两条支付记录

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

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

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

但我得到了这个错误

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

【问题讨论】:

    标签: laravel eloquent


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      试试:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-11
        相关资源
        最近更新 更多