簡體   English   中英

從PHP INNER JOIN表創建多維JSON

[英]Create Multidimensional JSON from PHP INNER JOIN table

我是一個新學習者。 我的mySQL數據庫中有3個表,第一個是“user”,第二個是product_detail,第三個是product_images。 他們正在使用外鍵加入。 像: mySql表 ,我正在使用php PDO oops for desire output。
我想顯示具有產品圖像的特定用戶產品的列表。 所以我得到的對象如下:

[
   {
      "user_id": "1",
      "product_id": "7",
      "product_name": "product title",
      "product_description": "product description",
      "product_img_id": "1",
      "product_img_path": "/products/product1.jpg",
      "product_img_type": "main"
   },
   { ...  },
   { ...  },
   { ...  },
]

我的Php對象類函數代碼:

function read(){
   $query = "SELECT
               p.user_id, p.product_id, p.product_name, p.product_description, 
           p1.product_img_id, p1.product_img_path, p1.product_img_type
    FROM        user AS p
    LEFT JOIN   product_description AS p1  
    ON       p.product_id = p1.product_id
    ORDER BY    p.user_id DESC, p.product_id DESC";
    $stmt = $this->conn->prepare($query);
    $stmt->execute();
    return $stmt;
}

這是我的創建對象代碼:

if ($num > 0) {
   $products_arr = array();
   while ($row = $stmt -> fetch(PDO:: FETCH_ASSOC)) {
      extract($row);
      $product_item = array(
         "user_id" => $user_id,
         "product_id" => $product_id,
         "product_name" => $product_name,
         "product_description" => $product_description,
         "product_img_id" => $product_img_id,
         "product_img_path" => $product_img_path,
         "product_img_type" => $product_img_type
      );
      $products_arr[] = $product_item;
   }
   echo json_encode($products_arr);
}

所以我需要一個像這樣的對象:

{
   "user_id" : "1",
      "product" : [
         {
            "user_id": "1",
            "product_id": "1",
            "product_name": "product title ",
            "product_description": "this is product description",
            "product_images": [
               {
                  "product_img_id": "1",
                  "product_img_path": "/products/product1.jpg",
                  "product_img_type": "main"
               },
               {...},
               {...},
               {...},
               {...}
            ]
         },
         {...},
         {...},
         {...}
      ]
}

我想要

{ **user**
   { all **product** of this user {
        all **images** of this product
     }
   }
}

在您的PHP代碼中,您將以下代碼更改為底部的代碼

$product_item = array(
     "user_id" => $user_id,
     "product_id" => $product_id,
     "product_name" => $product_name,
     "product_description" => $product_description,
     "product_img_id" => $product_img_id,
     "product_img_path" => $product_img_path,
     "product_img_type" => $product_img_type
  );

以下內容:

$product_image = array(
   "product_img_id"   => $product_img_id,
   "product_img_path" => $product_img_path,
   "product_img_type" => $product_img_type
);

$product = [
    "product_id" => $product_id,
    "product_name" => $product_name,
    "product_description" => $product_description,
    "product_images" => $product_image
];

$product_item = array(
    "user_id" => $user_id,
    "product" => $product
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM