在PHP Laravel中循环遍历类别及其产品
我必须用categories数组及其相关产品创建一个数组。我正在使用此查询获取所有相关产品的类别在PHP Laravel中循环遍历类别及其产品,php,laravel,laravel-5,Php,Laravel,Laravel 5,我必须用categories数组及其相关产品创建一个数组。我正在使用此查询获取所有相关产品的类别 $categoryData= Category::with('product')->get(); 正确获取数据,使用此循环获取以下格式的数据: foreach($categoryData as $row){ $categoriesData[] = [ 'id' => $row->id,
$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
];
}
}
格式(应该是这样的):
但通过目前的循环,所有产品都保存在一个阵列中。它不是在类别内保存
非常感谢您提供的任何帮助您好,我想这就是您需要的:
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
];
}
}
如果愿意,您可以使用收集方法来实现这一点,基本上只需
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$row)中缺少“as”{
@lagbox:我已经添加了一种格式,其中product_详细信息可以是Products数组,这就是它的嵌套方式,因为它已经迫不及待地加载了这种关系……所以你真的需要一个转换器或API资源来调整它的方式looks@lagbox:但我想将其存储在数组中,我不想在视图中获取它
$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();