php - Laravel 5.5 集合部分分组
问题描述
我需要有关如何按位置然后按大小对以下集合进行分组的帮助:
[
{
"location_id": 1,
"location_address": "Some address",
"location_image": "https://some/image.url",
"size_id": 1,
"size_code": "S",
"available_boxes": 3
},
{
"location_id": 1,
"location_address": "Some address",
"location_image": "https://some/image.url",
"size_id": 2,
"size_code": "M",
"available_boxes": 4
},
{
"location_id": 1,
"location_address": "Some address",
"location_image": "https://some/image.url",
"size_id": 3,
"size_code": "L",
"available_boxes": 5
},
{
"location_id": 2,
"location_address": "Some other address",
"location_image": "https://some/other/image.url",
"size_id": 4,
"size_code": "XL",
"available_boxes": 10
}
]
这是预期的结果:
真的很感激,提前谢谢!
解决方案
可能不优雅,但这可以完成工作:
$locations = $this->records->unique('location_id');
$transformed = [];
foreach ($locations as $location) {
$sizes = $this->records->whereStrict('location_id', $location->location_id);
$transformedSizes = [];
foreach ($sizes as $size) {
$transformedSizes[] = [
'id' => $size->size_id,
'code' => $size->size_code,
'available_boxes' => $size->available_boxes
];
};
$transformed[] = array_merge(
[
'id' => $location->location_id,
'address' => $location->location_address,
'image' => $location->location_image
],
[
'sizes' => $transformedSizes
]
);
}
return $transformed;
推荐阅读
- peoplesoft - 更新了 DDL Model Deaults 的 PSDDLMODEL 表,现在页面上出现缓冲区错误
- c# - 由于 Android 上的权限问题,我的应用程序正在终止
- xml - XQUERY:优化涉及大型集合的查询
- git - 在 Jenkins 中创建拉取请求
- javascript - TypeError:无法设置未定义的属性“_eventListeners”
- c# - c# 使用没有 BindingSource 的高级 datagridview (ADGV) 过滤器
- python - 导入 URL 数据属于一个索引 - Python
- sql - 在同一个程序中使用 excel 和 sql 数据库进行咨询
- regex - Netscape Navigator 9 中的正则表达式
- javascript - React.js map() 不是函数吗?