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

amcharts - Force Directed Tree - convert data 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);