我有以下雄辩的查询:
$extras = EventExtra::select('id', 'category', 'name', 'price', 'description', 'company')->get();
它从我的数据库中获取了一些数据。我想要的是将返回的数据分组两次,首先按类别分组,然后由公司分组,以便最终我有类似的东西返回给客户端:
[
{
"name": "donation",
"collection": [
{
"name": "sampleCompany1",
"array": [
{
"name": "extra1",
"description": "",
"value": ""
},
{
"name": "extra4",
"description": "",
"value": ""
},
{
"name": "extra6",
"description": "",
"value": ""
}
]
}
]
},
{
"name": "donation",
"collection": [
{
"name": "sampleCompany2",
"array": [
{
"name": "extra2",
"description": "",
"value": ""
},
{
"name": "extra3",
"description": "",
"value": ""
}
]
}
]
}]
我只是输入上面的内容,所以它可能不是有效的对象数组,但基本上它显示了我想在这里完成的事情。
答案 0 :(得分:1)
您可以使用Collection
来构建自定义对象。像这样:
$return_data = Collect();
要使用属性添加集合中的项目,可以使用put
函数。
$inner_data->put('name',$extras->name);
您还可以在集合中添加集合。
要仅推送集合中的现有集合,请使用push
函数
$inner_data->push($some_collection)
编辑:由于您需要一个有效的示例,请参阅以下内容:
假设您要使用集合创建以下内容:
{
"name": "extra1"
"description": "",
"value": ""
}
你会做这样的事情:
$my_collection = Collect();
$my_collection->put('name','extra1');
$my_collection->put('description','');
$my_collection->put('value','');
现在,您可以将此集合添加到另一个不需要密钥的集合中。现在让我们说它看起来像这样:
[
{
"name": "extra1"
"description": "",
"value": ""
},
{
"name": "extra4"
"description": "",
"value": ""
}
]
您现在可以:
$my_final_collection = Collect();
foreach($my_collections as $my_collection) {
$my_final_collection->push($my_collection); // and so on in a loop
}