У меня есть таблица, которая содержит филиалы, отделы и команды. В филиале может быть много отделов, а в отделе может быть много команд. Класс называется 'Organisation`.
Таблица organisations
:
id parent_id type name
1 null b Branch1
2 null b Branch2
3 1 d Dep1
4 2 d Dep2
5 3 t Team1
6 4 t Team2
Я пытаюсь создать в классе метод, который будет рекурсивно возвращать все дочерние записи для данной позиции. в дереве.
У меня есть связь с именем children
:
/**
* Children
*/
public function children()
{
return $this->hasMany(Organisation::class, 'parent_id', 'id');
}
Я создал метод с именем tree
в классе следующим образом:
/**
* Organisation Tree
*/
public function tree()
{
$merged = new Collection;
foreach($this->children as $child) {
$merged->merge($child->tree());
}
return $merged;
}
Так, например:
$o = Organisation::find(1);
$treeCollection = $o->tree();
И $treeCollection
должен содержать:
id parent_id type name
1 null b Branch1
3 1 d Dep1
4 3 t Team1
Но вышеприведенный метод возвращает пустую коллекцию и не дает сбоя. Что я пропустил?