Laravel对包含多个项目的集合求和
我有一个模型Laravel对包含多个项目的集合求和,laravel,Laravel,我有一个模型settlementries,它与一个子表return$this->hasMany('App\Online','entry_id')有关系 当尝试获取一个条目时,我能够像下面的示例中那样对我的集合求和 $item = SettlementEntries::find($id); $item->Online->sum('field'); // returns the correct sum 我的问题始于$id是一个数组时,因此我的结果包含两个结算 $items = Set
settlementries
,它与一个子表return$this->hasMany('App\Online','entry_id')有关系代码>
当尝试获取一个条目时,我能够像下面的示例中那样对我的集合求和
$item = SettlementEntries::find($id);
$item->Online->sum('field'); // returns the correct sum
我的问题始于$id
是一个数组时,因此我的结果包含两个结算
$items = SettlementEntries::find($ids);
$items->Online->sum('field'); <- returns zero
$items=settlementries::find($id);
$items->Online->sum('field') Laravel的集合
通过使用点符号使这一点变得非常简单。一些例子
简单方法(点表示法):
$sum = $items->sum('Online.field');
更明确(回调):
$sum = $items->sum('Online.field');
或者,如果您希望更明确,例如使用条件/过滤器:提供一个闭包
:
使用foreach
处理单个条目我不需要计算单个条目的总和,我需要将它们组合在一起。这是可行的,但如果不循环使用它们,就不可能做到这一点?$sum=$items->sum('Online.field')代码>始终返回0我已在阵列上对此进行了测试。你能试试$sum=collect($items->toArray())->sum('Online.field')代码>?不起作用。因此继续获取0。如果我执行以下操作$items->sum('Online.0.field')代码>它似乎适用于您的第一个解决方案(上面的点表示法)。