繁体   English   中英

遍历 PHP Laravel 中的类别及其产品

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM