如何在组后对集合求和由拉拉维尔

  • 本文关键字:求和 集合 php 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项目的房间定价历史记录的总和,3944ofc 它可以是 2 个项目以上,所以我想获得每个集合的总和如何实现?

集合sum方法可以接受回调,以便您可以定义要计算的内容。在这种情况下,您可以在主集合上调用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')];
});

Laravel 6.x 文档 - 集合 - 可用方法 -mapWithKeys

最新更新