Я пытаюсь выяснить, как работают эти вложенные множества в Laravel. У меня есть отношение многие ко многим между organizations
и departments
. organization
может иметь много departments
. Отдел может иметь много departments
. Для этого я использую Nestedsets .
Что я пытаюсь сделать, так это получить все организации от пользователя. По этому запросу я бы хотел получить все отделы, связанные с этими организациями. Мне нужна структура, поэтому у меня есть бесконечные родительские -> дочерние отношения в моих отделах, поэтому я могу построить структурное дерево, используя treant.js .
Я почти уверен, что все правильно построено в моей базе данных, поэтому моей первой мыслью было использовать with
. Однако, похоже, у меня только первые дети. Вот пример:
$currentUser->organizations()->with(
'departments.children',
'departments.commodities',
'departments.children.commodities',
)->get()
Я должен включить детей. [Модель] для каждого вложенного отдела. Так что, если у меня два уровня, я должен добавить департаменты.children.children.commodities и так далее. Это кажется довольно отсталым!
Я пробовал довольно много разных подходов, чтобы найти правильное решение, но тот, который приведен ниже, является моим лучшим решением на данный момент. Я просто чувствую, что неправильно использую nestedset-библиотеку.
public function getUserDepartmentTree() {
foreach ( $this->organizations()->get() as $organization ) {
$dep[] = $organization->departments()->get()->toTree();
}
return $dep;
}
Итак, мой вопрос: как мне получить все реляционные данные из древовидной структуры моих отделов?