gpt4 book ai didi

php - 将 JOIN SQL 查询序列化为 JSON 的最佳方法

转载 作者:行者123 更新时间:2023-11-29 12:09:57 24 4
gpt4 key购买 nike

我找不到适合我问题的标题。我正在做一个 Restful API/JSON

我的问题是:

我有两张 table :

Product: id, name
Prices: id_product, price

Product 1--* Prices (One product have got multiples prices)

那么,如果我想导出 JSON 中的下一个信息

products: [
{
id:1
name: chair
prices: [3.3,5.0,6.0]
}
, {
id:2
name: apple
prices: [2.0,5.0]
} ,..
]

我执行下一个查询:

SELECT product.id, product.name, prices.price FROM procut LEFT JOIN prices ON product.id = prices.id_product

我得到了下一个结果:

id  , name  , prices
----------------------
1 chair 3.3
1 chair 5.0
1 chair 6.0
2 apple ...
...

我使用 PHP,codeigniter。有没有办法转换成格式良好的 JSON?因为我必须重建结果,执行以下操作:

        $resultArray = $query->result_array();  //CodeIgniter

foreach($resultArray as $row)
{
if(!isset($resultData[$row['id']]))
{
$resultData[$row['id']] = $row;
unset($resultData[$row['id']]['price']);

$resultData[$row['id']]['prices'] = array();

}

$resultData[$row['id']]['prices'][] = $row['price'];
}

创建格式正确的 JSON

最佳答案

这是使用 PHP 对 SQL 的结果进行排序的正常做法,所以您的方法是正确的。

    $result = array();
foreach($query->result_array() as $row)
{
$result[$row['id']] = array(
'id'=>$row['id'],
'name'=>$row['name'],
'price'=>isset($result[$row['id']]['price']) ? array_push($result[$row['id']]['price'],$row['price']) : array($row['price'])
);
}

$this->output
->set_content_type('application/json')
->set_output(json_encode(array('products'=>array_values($result))));

关于php - 将 JOIN SQL 查询序列化为 JSON 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30867200/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com