强制定向树-转换数据Laravel PHP



我正在尝试显示一个力导向树。共有3种型号公司/部门/部门

每家公司都有许多部门。每个部门属于一个公司。

每个部门都有许多部门。每个部门隶属于一个部门。

amcharts需要如下语法:

[{
"name": "First",
"children": [{
"name": "A1", "value": 100
}, {
"name": "A2", "value": 60
}, {
"name": "A3", "value": 30
}]
}, {
"name": "Second",
"children": [{
"name": "B1", "value": 135
}, {
"name": "B2", "value": 98
}, {
"name": "B3", "value": 56
}]
}, {
"name": "Third",
"children": [{
"name": "C1", "value": 335
}, {
"name": "C2", "value": 148
}, {
"name": "C3", "value": 126
}, {
"name": "C4", "value": 26
}]
}, {
"name": "Fourth",
"children": [{
"name": "D1", "value": 415
}, {
"name": "D2", "value": 148
}, {
"name": "D3", "value": 89
}, {
"name": "D4", "value": 64
}, {
"name": "D5", "value": 16
}]
}, {
"name": "Fifth",
"children": [{
"name": "E1", "value": 687
}, {
"name": "E2", "value": 148
}]
}]

我只能在这里获得第一级:

foreach ($companies as $company) {
$data[] = 
(object) [
'name' => $company->name,
'value' => $company->value,
];
}

我确信我需要进一步迭代$company->devisions等等,但不确定如何构建amcharts所期望的最终结构。有什么提示吗?

您可以尝试以下行中的内容:

$data = [];
foreach ($companies as $company) {
$childrenArray = [
'name' => $company->name,
];
foreach ($company->divisions as $division) {
$childArray['children'][] = [
'name' => $division->name,
'value' => $division->value,
];
}
$data[] = $childrenArray;
}
return json_encode($data);

最新更新