Php 在Laravel中合并集合的值
我一直在思考这个问题。到目前为止,我一直在尝试阅读、搜索和尝试这些收藏的文档,但对我要做的事情却毫无把握 我试图实现的是按“产品id”合并所有产品,将“数量”相加,并将同一产品的“责任”数组合并到一个新集合中: 我的数据库中有以下信息:Php 在Laravel中合并集合的值,php,arrays,laravel,eloquent,Php,Arrays,Laravel,Eloquent,我一直在思考这个问题。到目前为止,我一直在尝试阅读、搜索和尝试这些收藏的文档,但对我要做的事情却毫无把握 我试图实现的是按“产品id”合并所有产品,将“数量”相加,并将同一产品的“责任”数组合并到一个新集合中: 我的数据库中有以下信息: [ { "qty":"8", "product_id":6, "product":{ "id":6, "name":"Mantequilla", "barcode":
[
{
"qty":"8",
"product_id":6,
"product":{
"id":6,
"name":"Mantequilla",
"barcode":"123456789",
"full_name":"Mantequilla - 123456789"
},
"itbis":"0",
"precio":"0",
"responsible":"Juan"
},
{
"qty":"4",
"product_id":6,
"product":{
"id":6,
"name":"Mantequilla",
"barcode":"123456789",
"full_name":"Mantequilla - 123456789"
},
"itbis":"0",
"precio":"0",
"responsible":"Carlos"
},
{
"qty":"3",
"product_id":8,
"product":{
"id":8,
"name":"Papas",
"barcode":"4567894456",
"full_name":"Papas - 4567894456"
},
"itbis":"0",
"precio":"0",
"responsible":"Pedro"
}
]
然后将转换为:
谢谢你救了我一天。我并没有弄清楚地图是如何工作的,所以我学习了它的工作原理并解决了我的问题。谢谢!你救了我一天。我并没有弄清楚地图是如何工作的,所以我学习了它的工作原理并解决了我的问题。
[
{
"qty":"12",
"product_id":6,
"product":{
"id":6,
"name":"Mantequilla",
"barcode":"123456789",
"full_name":"Mantequilla - 123456789"
},
"itbis":"0",
"precio":"0",
"responsible": ["Juan", "Carlos"]
}
{
"qty":"3",
"product_id":8,
"product":{
"id":8,
"name":"Papas",
"barcode":"4567894456",
"full_name":"Papas - 4567894456"
},
"itbis":"0",
"precio":"0",
"responsible":"Pedro"
}
]
$arr = [...]; // Your input array
$res = collect($arr)
->groupBy('product_id')
->map(function ($sub_collection) {
$first = $sub_collection->first();
$first['qty'] = array_sum(array_column($sub_collection->toArray(), 'qty'));
$first['responsible'] = array_merge(array_column($sub_collection->toArray(), 'responsible'));
return $first;
})
->toArray();