【问题标题】:Sum relation on grouped collection分组集合上的求和关系
【发布时间】:2018-05-14 06:37:12
【问题描述】:

我有两张表,发票和服务。我正在尝试查询 Invoices with Services 作为关系。我有按日期分组的发票。对集合进行分组后,是否有适当的方法来汇总关系上的列?这是我找到的唯一解决方案,但它涉及在我看来使用 php 代码。如果可能的话,我想将 php 保留在控制器中。

这是我的控制器:

$invoices = \App\Invoice::
        with('services')
        ->orderBy('date')
        ->get()
        ->groupBy(function($item) {
        return Carbon::createFromFormat('Y-m-d', $item->date)->format('Y-M');
     });

这是我的看法:

@foreach ($invoices as $key=>$i)
   <tr>
     <td>{{$key}}</td>
     <td class="text-right">{{$i->sum('discount')}}</td>
     <td class="text-right"> 
        <?php $sum = 0;?>
        @foreach($i as $x)
          <?php $sum += $x->services->sum('rate') ?>
        @endforeach
        {{$sum}}
     </td>
  </tr>
@endforeach

【问题讨论】:

  • 如果我正确理解了这段代码,$invoices(在分组依据之后)实际上代表了一个日期数组,其中包含发票。我对吗?只是想了解一下这里的数据结构

标签: php laravel eloquent


【解决方案1】:

使用这个:

$i->pluck('services')->collapse()->sum('rate')

【讨论】:

  • 您能否就答案提供反馈?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-07
  • 1970-01-01
  • 1970-01-01
  • 2016-01-13
  • 2021-02-03
  • 1970-01-01
相关资源
最近更新 更多