【问题标题】:Foreach array of objects in PHPPHP中的foreach对象数组
【发布时间】:2021-04-14 10:24:20
【问题描述】:

我正在尝试组合来自两个表的数据以获取然后转换为 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"
  }]

无论如何要使用键而不是具有不同对象的键来推送数组? 谢谢。

【问题讨论】:

    标签: php arrays json laravel object


    【解决方案1】:

    我做到了:

    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; 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-22
      • 2012-11-02
      • 2014-03-20
      • 2017-04-13
      • 2010-11-24
      • 1970-01-01
      • 2016-06-20
      • 1970-01-01
      相关资源
      最近更新 更多