我有一个对象,它由多个数据组成,如controlNumber
,每个controlNumber
都有shipment.qty
,我想要的是将每个相同controlNumber
的qty
加起来,并显示一个controlNumber
的总量。
集合
"collection": [
{
"id": 983,
"controlNumber": 4498818,
"ItemNumber": "PS2W12077",
"shipment": {
"id": 27,
"Item": "PS2W12077",
"ColorCode": "GRPFR",
"qty": 1638
}
},
{
"id": 982,
"controlNumber": 4498818,
"ItemNumber": "PS2W12077",
"shipment": {
"id": 27,
"Item": "PS2W12077",
"ColorCode": "GRPFR",
"qty": 1638
}
},
{
"id": 936,
"controlNumber": 4498815,
"ItemNumber": "PS2T01096",
"shipment": {
"id": 11,
"Item": "PS2T01096",
"ColorCode": "MALDI",
"qty": 1212
}
},
]
controlNumber4498818
有两个发货数据和两个qty
,我想显示的是一个controlNumber
和3276
的总qty
我退出的是返回所有controlNumber
的总qty
$result = $collection->pipe(function ($collection) {
return collect([
'shipment_qty' => $collection->sum('shipment.qty'),
]);
});
输出应该如下所示
"collection": [
{
"id": 983,
"controlNumber": 4498818,
"ItemNumber": "PS2W12077",
"shipment": {
"id": 27,
"Item": "PS2W12077",
"ColorCode": "GRPFR",
"qty": 3276
}
},
{
"id": 936,
"controlNumber": 4498815,
"ItemNumber": "PS2T01096",
"shipment": {
"id": 11,
"Item": "PS2T01096",
"ColorCode": "MALDI",
"qty": 1212
}
},
]
您可以使用唯一收集方法根据控件编号值获取唯一项:
$uniqueCollection=$collection->unique('controlNumber');
$result=$collection2->sum(function ($item){
return $item->shipment->qty;
});
这样你就得到了一个集合,其中键是controlNumber
,值是shipment->qty
的和。
$collection->mapToGroups(function ($item) {
return [$item->controlNumber => $item->shipment->qty];
})->map->sum();