php - 如何在 groupBy laravel 之后对集合求和
问题描述
我有一个名为detailed
如下的集合:
Collection {#1421 ▼
#items: array:2 [▼
3943 => Collection {#1419 ▼
#items: array:2 [▼
0 => RoomPricingHistory {#923 ▶}
1 => RoomPricingHistory {#1042 ▶}
]
}
3944 => Collection {#1420 ▼
#items: array:2 [▼
0 => RoomPricingHistory {#1153 ▶}
1 => RoomPricingHistory {#1264 ▶}
]
}
]
}
现在我想获得3943
项目的 RoomPricingHistory 和3944
ofc 的总和,它可以是 2 个以上的项目,所以我想获得每个集合的总和,我该如何实现?
解决方案
Collectionsum
方法可以接受回调,以便您可以定义要计算的内容。在这种情况下,您可以调用sum
主集合和回调,这将使您可以访问内部集合,也可以调用sum
.
$detailed->sum(function ($group) {
return $group->sum('sales_price');
});
Laravel 6.x 文档 - 集合 - 可用方法 -sum
由于这不是您要查找的内容,因此您可以使用类似mapWithKeys
的方法浏览集合并调用sum
组以获取每个组的总和:
$sums = $detailed->mapWithKeys(function ($group, $key) {
return [$key => $group->sum('sales_price')];
});
推荐阅读
- c# - Linq 从嵌套列表中查找所有具有 id 的元素
- database - 简单的用户权限数据库结构
- google-cloud-platform - 在谷歌云上的 slurm 部署中更改 ControlPort
- angular - 通过 @ContentChildren 或 @ContentChild 传递的渲染组件
- react-native - 权限 Android for iOS in React Native
- json - 有没有办法在 JSON 响应中返回 null?
- excel - 在excel Vba中引用字符串时如何忽略特殊字符
- json - 在 Xcode 中按 JSON 显示数据库中的数据
- sql-server - 如何将exec的结果存储在变量中
- python - 通过 tcp 将图像从树莓派发送到 pc 中的程序并在 pc 上显示