ENestedSetBehavior и root
ENestedSetBehavior и root
Здравствуйте.
Есть такая проблема.
1) Как сделать что бы у деревьев не было вершины.(деревья хранятся в 1 таблице) Точней что бы было много вершин.
Пример:
Есть 2 объекта с Id=1 и id=2
Для этих 2х объектов нужно построить 2 дерева. Я хочу что бы выглядели они так
Объект с id=1
Первая папка
-вложенная папка
Вторая папка
-вложенная во вторую папку папка
Объект с id=2
Первая папка
Вторая папка
-вложенная во вторую папку папка
Третья папка
Ну и так далее. а получается только так
Объект с id=1
Все папки
-Первая папка
--вложенная папка
-Вторая папка
--вложенная во вторую папку папка
2) У меня есть список объектов каждому я должен присвоить свое дерево.
при создании дерева, я хочу что бы root равнялся ID этого объекта, но я не могу этого сделать. root назначается сам.
Есть такая проблема.
1) Как сделать что бы у деревьев не было вершины.(деревья хранятся в 1 таблице) Точней что бы было много вершин.
Пример:
Есть 2 объекта с Id=1 и id=2
Для этих 2х объектов нужно построить 2 дерева. Я хочу что бы выглядели они так
Объект с id=1
Первая папка
-вложенная папка
Вторая папка
-вложенная во вторую папку папка
Объект с id=2
Первая папка
Вторая папка
-вложенная во вторую папку папка
Третья папка
Ну и так далее. а получается только так
Объект с id=1
Все папки
-Первая папка
--вложенная папка
-Вторая папка
--вложенная во вторую папку папка
2) У меня есть список объектов каждому я должен присвоить свое дерево.
при создании дерева, я хочу что бы root равнялся ID этого объекта, но я не могу этого сделать. root назначается сам.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: ENestedSetBehavior и root
1. Включить режим multipleRoots?
2. Может цеплять в обратном порядке?
2. Может цеплять в обратном порядке?
Нравится Yii? Давайте сделаем его лучше!.
Re: ENestedSetBehavior и root
1. что это за режим и как его включать?
в установках 'hasManyRoots' => true,
2. Да можно цеплять и в обратном порядке и еще одно поле дописать, но хочется сделать что бы было логично.
root это же грубо говоря индитификатор группы. зачем создавать еще 1 такой индитификатор если поле предназначенное для этого уже есть?
в установках 'hasManyRoots' => true,
2. Да можно цеплять и в обратном порядке и еще одно поле дописать, но хочется сделать что бы было логично.
root это же грубо говоря индитификатор группы. зачем создавать еще 1 такой индитификатор если поле предназначенное для этого уже есть?
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: ENestedSetBehavior и root
1. Значит включен. Можно создавать корни.
Нравится Yii? Давайте сделаем его лучше!.
Re: ENestedSetBehavior и root
1) А как это делать что бы получалось так как я указал?
Что бы дерево в root создавалось с множеством вершин?
Или я не правильно понимаю логику?
А понимаю я так, Где root одинаков, там элементы принадлежат одному дереву.
Что бы получилось то что мне нужно
Первая папка
Вторая папка
-вложение в папку
Третья папка
получается 3 разных дерева
Неужели это нельзя сделать 1 деревом?
Что бы дерево в root создавалось с множеством вершин?
Или я не правильно понимаю логику?
А понимаю я так, Где root одинаков, там элементы принадлежат одному дереву.
Что бы получилось то что мне нужно
Первая папка
Вторая папка
-вложение в папку
Третья папка
получается 3 разных дерева
Неужели это нельзя сделать 1 деревом?
Re: ENestedSetBehavior и root
Если Вам нужно посадить одно дерево - сажайте одно, если нужна поляна - сажайте поляну
Если у Вас включена функция hasManyRoots у Вас есть возможность создавать много деревьев, логически независимых друг от друга, в ином случае Вы можете создать только одну иерархию с одним корнем.
Если у Вас включена функция hasManyRoots у Вас есть возможность создавать много деревьев, логически независимых друг от друга, в ином случае Вы можете создать только одну иерархию с одним корнем.
Re: ENestedSetBehavior и root
Не поняли вы меня.
Мне нужна "поляна", много независимых друг от друга деревьев.
Но, нужно что бы у дерева была не одна вершина а несколько
Мне нужна "поляна", много независимых друг от друга деревьев.
Но, нужно что бы у дерева была не одна вершина а несколько
Re: ENestedSetBehavior и root
Ну или если по другому, то мне нужно просто вершину обрезать
Re: ENestedSetBehavior и root
Root это точно такой же узел как и все остальные.Professor писал(а):root это же грубо говоря индитификатор группы
Это служебное поле, оно предназначено для распределения деревьев. Оно не должно использоваться как либо по другому.Professor писал(а):зачем создавать еще 1 такой индитификатор если поле предназначенное для этого уже есть?
Вы сами отвечаете на свой вопрос. Создайте в таблице объектов поле в котором будет записан идентификатор корня дерева, которое принадлежит этому объекту. Это будет оптимальный вариант.Professor писал(а):У меня есть список объектов каждому я должен присвоить свое дерево