PHP中的Foreach对象数组



我试图将两个表中的数据组合起来,以获取并转换为JSON数据。我希望数据格式类似于:

[
{
"designs" : [
{
"id": 6,
"product_id": 2,
"sku": "2648",
"size": "5*4",
"materialType": "Aluminum",
},
{
"id": 7,
"product_id": 2,
"sku": "1234",
"size": "10*4",
"materialType": "Wood",
}
],
"id": 2,
"category_id": 5,
"product_name": "Restricted Area Sign",
"price": 1000,
"category_name": "Medical Safety"
}
]

在Laravel中使用以下代码:

$products = Product::get();
foreach($products as $key => $val) {
$category_name = Category::where(['id' => $val->category_id])->first();
$products[$key]->category_name = $category_name->name;
$attributes=ProductsAttribute::where(['product_id' => $val->id])->get();            
foreach($attributes as $attr => $attrValue){
$products[$key][$attr] = $attrValue;                            
}
}
$products = json_decode($products);
return $products;
}

但相反,我得到了这样的回应:

[
{
"0": {
"id": 6,
"product_id": 2,
"sku": "2648",
"size": "5*4",
"materialType": "Aluminum",
},
"1": {
"id": 7,
"product_id": 2,
"sku": "1234",
"size": "10*4",
"materialType": "Wood",
},
"id": 2,
"category_id": 5,
"product_name": "Restricted Area Sign",
"price": 1000,
"category_name": "Medical Safety"
}]

无论如何,用键推送数组,而不是用不同对象的键?谢谢

我做到了:

public function viewProductsApi(Request $request){
$products = Product::get();
foreach($products as $key => $val) {
$category_name = Category::where(['id' => $val->category_id])->first();
$products[$key]->category_name = $category_name->name;
$attributes=ProductsAttribute::where(['product_id' => $val->id])->get();
$products[$key]->desings = $attributes;
}
$products = json_decode($products);
return $products; 
}

最新更新