[英]Loop through Categories and its Products in PHP Laravel
我必须使用类别数组及其相关产品创建一个数组,我正在使用此查询获取所有相关产品的类别
$categoryData= Category::with('product')->get();
数据被正确获取,使用此循环获取以下格式的数据:
foreach($categoryData as $row){
$categoriesData[] = [
'id' => $row->id,
'title' => $row->title,
];
foreach($row->product as $rowproduct){
$categoriesData['product_details'][] = [
'product_name' => $rowproduct->name,
'product_price' => $rowproduct->price
];
}
}
格式(应该是这样的):
{
"categoriesData": {
"0": {
"id": 1,
"category_name" : "Name 1",
"product_details": [
{
"id": 1,
"product_name": Product Name,
},
],
"1": {
"id": 2,
""category_name" ": "Name 2",
"product_details": [
{
"id": 1,
"product_name": product name,
},
},
但是通过当前循环,所有产品都保存在一个数组中。 它不是在类别内保存。
非常感谢任何帮助
如果您愿意,您可以使用 Collection 方法执行此操作,基本上只是map
:
$array = $categoryData->map(function ($category) {
return [
'id' => $category->id,
'title' => $category->title,
'product_details' => $category->products->map(function ($product) {
return [
'product_name' => $product->name,
'product_price' => $product->price,
];
}),
];
})->all();
尽管这是使用变压器或 API 资源来格式化此数据的方向。
嗨,我想这就是你要找的:
foreach ($categoryData as $key => $row) {
$categoriesData[$key] = [
'id' => $row->id,
'title' => $row->title,
];
foreach ($row->product as $rowproduct) {
$categoriesData[$key]['product_details'][] = [
'product_name' => $rowproduct->name,
'product_price' => $rowproduct->price
];
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.