Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP Laravel中循环遍历类别及其产品_Php_Laravel_Laravel 5 - Fatal编程技术网

在PHP Laravel中循环遍历类别及其产品

在PHP Laravel中循环遍历类别及其产品,php,laravel,laravel-5,Php,Laravel,Laravel 5,我必须用categories数组及其相关产品创建一个数组。我正在使用此查询获取所有相关产品的类别 $categoryData= Category::with('product')->get(); 正确获取数据,使用此循环获取以下格式的数据: foreach($categoryData as $row){ $categoriesData[] = [ 'id' => $row->id,

我必须用categories数组及其相关产品创建一个数组。我正在使用此查询获取所有相关产品的类别

  $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();