php - 使用 MySQL 和 PHP 为动态 d3.js 库生成 JSON
问题描述
我正在与 Laravel 合作开发一个客户项目,我想建立一个树结构,其中包含在系统中注册的用户。我从 d3.js 库中找到了一个执行任务的脚本,为此它使用 JSON 来获取数据。
它的工作结构如下:
{
"name": "Top Level",
"parent": null,
"children": [{
"name": "Level 2: A",
"parent": "Top Level",
"children": [{
"name": "Son of A",
"parent": "Level 2: A"
},
{
"name": "Daughter of A",
"parent": "Level 2: A"
}
]
},
{
"name": "Level 2: B",
"parent": "Top Level"
}
]
}
我试图以相同的格式准备我的 JSON,但我无法管理。例如,我的数据库中有一个用户,"parent": null
在我的情况下是: "id_user_parent": null
,并且所有其他用户都与其他用户 ID 相关。
我的问题是,如何让这个用户"id_user_parent": null
首先和其他用户分别填充他们各自的孩子?
我在控制器中的调用:
$users = User::select('name_first', 'name_second', 'id_user_parent')->get()
我的数据库中的答案是:
[
{
"name_first": "Tiago",
"name_second": "Revers Paza",
"id_user_parent": null
},
{
"name_first": "Yuri",
"name_second": "Luiz Hugo da Cunha",
"id_user_parent": 1
},
{
"name_first": "Severino",
"name_second": "Ben\u00edcio das Neves",
"id_user_parent": 1
}
]
我生成了一个脚本并处理了数据库中的这些数据,得到了以下结果:
$users = User::select('name_first', 'name_second', 'id_user_parent')->get();
foreach ($users as $user) {
if ($user['id_user_parent'] == null) {
$main['name'] = $user['name_first'] . ' ' . $user['name_second'];
$main['parent'] = $user['id_user_parent'];
$data = $main;
}
}
foreach($users as $key => $user) {
if ($user['id_user_parent'] != null) {
$data['children'][$key]['name'] = $user['name_first'] . ' ' . $user['name_second'];
$data['children'][$key]['parent'] = $user['id_user_parent'];
}
}
dd($data);
我的 JSON 结果是:
array:3 [▼
"name" => "Tiago Revers Paza"
"parent" => null
"children" => array:2 [▼
1 => array:2 [▼
"name" => "Yuri Luiz Hugo da Cunha"
"parent" => 1
]
2 => array:2 [▼
"name" => "Severino Benício das Neves"
"parent" => 1
]
]
]
也就是说,正如“预期”的那样,它仅适用于单个级别,并且其想法是根据id_user_parent
.
有人对如何从我的数据库动态生成此 JSON 有任何想法吗?
解决方案
推荐阅读
- cmake - 使用 CMake,如何识别目标的依赖项
- python - 在 python 的蛇游戏中蛇不吃食物
- .net-core - dotnet 核心中的 [ScriptIgnore] 在哪里?
- python - 基于具有条件的其他列值创建新列
- python - 单视图计量:如何测量单帧视频的高度?
- python - Python追加不适用于二维数组中的axis = 1
- c - Cython 将无法识别使用 vcpkg 加载的头文件
- javascript - 使用 jQuery 在页面顶部删除类
- spring - springdoc-openapi-ui 摆脱“client_secret”
- javascript - 有没有办法结合这两个代码?HTML 画布 JS