Привет всем! Есть интересная задачка, не могу довести до конца.
1. Есть БД с таблицей doc_structure. Там хранятся наименования и зависимости отделов организации. Вот скрин:
2. Я написал код, который вытаскивает и формирует массив данных об отделах. Вот код:
public $data;
public $tree;
$this->data = Structure::find()->asArray()->indexBy('id')->all();
3. Есть функция, которая формирует дерево отделов с
неограниченной вложенностью. Вот метод:
protected function getTree() {
$tree = [];
foreach ($this->data as $id => &$node) {
if(!$node['parent_id'])
$tree[$id] = &$node;
else
$this->data[$node['parent_id']]['childs'][$node['id']] = &$node;
}
return $tree;
}
Теперь, внимание, задача! Как и куда передавать параметры, чтобы получить массив вложенности отделов только для конкретного отдела? Т.е., предположим, я хочу только все подчинённые отделы - отдела с ID = 3 (IT департамента). По идее я должен получить массив вложенности IT департамент->Отдел администрирования->СПСС