例如我有两个表:
PRODUCTS (id, category_id, name);
CATEGORIES (id, name);
我想像这样传递给前端 JSON:
"categoryProjects": [
{
"id" : 1,
"name" : "some category name",
"projects": [
{
"id": 1,
"name": "Product1"
},
{
"id": 2,
"name": "Product2"
},
[
},
{
"id" : 2,
"name" : "second category name",
"projects": [
{
"id": 3,
"name": "Product3"
}
[
}
]
我的问题是:最好的方法是什么?我希望它尽可能高效。我在 php、数据库 (mysql) 中有简单的服务器,我想创建 API。我想知道为我的前端做端点的最好方法是什么。
最佳答案
你需要做一个 SQL 连接,像这样
select products.*, categories.name as category from products left join categories on products.category_id = categories.id
然后将返回的表映射到一个PHP数组并将其转换为JSON。
<?php
$sth = $pdo->query("select products.*, categories.name as category from products left join categories on products.category_id = categories.id");
$rows = $sth->fetchAll(PDO::FETCH_ASSOC);
$categories = [];
foreach ($rows as $row)
{
if (!isset($categories[$row['category_id']]))
{
$categories[$row['category_id']] = [
"name" => $row['category'],
"id" => $row['category_id'],
"products" => []
];
}
$categories[$row['category_id']]['products'][] = [
"id" => $row['id'],
'name' => $row['name']
];
}
print json_encode($categories, JSON_PRETTY_PRINT);
假设您的表是按照您描述的方式构建的,此代码将运行。
关于javascript - 从数据库中获取嵌套 JSON 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38178009/