【发布时间】:2020-10-25 05:41:12
【问题描述】:
我有下一个收藏:
它按zone 和fundo 分组,我需要总结每个fundo 包含的所有sup_ha
$transporFundo = $tansporCollect->groupBy(['zona','fundo']);
foreach ($transporFundo as $fundo) {
$supFundo = $fundo->sum('sup_ha');
dd($supFundo);
}
也就是说,例如,对于我的 zona 1 和 fundo 805 集合,我必须添加所见 364 条记录的 sup_ha 字段。
我尝试这样做,但我不知道如何访问该字段,正如我尝试过的代码所示,它返回 0。
希望你能帮帮我,谢谢
**
更新
** 好的,删除分组,例如显示如下的集合,原来有 700k 的记录
Illuminate\Support\Collection {#778646 ▼
#items: array:4 [▼
0 => array:3 [▼
"zona" => 1
"sup_ha" => 20
"fundo" => 805
]
1 => array:3 [▼
"zona" => 1
"sup_ha" => 10
"fundo" => 805
]
2 => array:3 [▼
"zona" => 2
"sup_ha" => 5
"fundo" => 800
]
3 => array:3 [▼
"zona" => 2
"sup_ha" => 10
"fundo" => 900
]
]
}
所以,我需要相等 fundo 的 sup_ha 的总和,如下所示:
fundo | sum
805 | 30
800 | 5
900 | 10
我需要相等 zona 的 sup_ha 的总和,如下所示:
zona | sum
1 | 30
2 | 15
鉴于此,这就是为什么我做了一个分组来计算fundo的总和。所以现在我不知道是否要考虑这样做是否正确
我希望你已经澄清了
【问题讨论】:
-
根据这个question可以这样做:
$supFundo = $fundo->sum(function($fun){return $fun->sum('sup_ha');}); -
这能回答你的问题吗? Laravel sum eloquent collection
-
第一个返回0到。第二个对我不起作用,因为他正在研究相关的收藏。我试试 supFundo = $fund->zona->fundo->sum('sup_ha');和 supFundo = $fund->fundo->sum('sup_ha');我得到一个错误,变量 zona/fundo 不在集合实例中
-
你的集合是这样嵌套的:array(array(array('zona','destino'...)));你应该遍历所有这些。
foreach($transporFundo as $zona){foreach($zona as $fundo){$sumFundo = $fundo->sum('sup_ha');}}} -
我发布了一个更新来澄清问题
标签: laravel laravel-5 collections eloquent