ENestedSetBehavior и root

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Professor
Сообщения: 115
Зарегистрирован: 2010.11.25, 19:47
Контактная информация:

ENestedSetBehavior и root

Сообщение Professor »

Здравствуйте.
Есть такая проблема.
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

Сообщение samdark »

1. Включить режим multipleRoots?
2. Может цеплять в обратном порядке?
Professor
Сообщения: 115
Зарегистрирован: 2010.11.25, 19:47
Контактная информация:

Re: ENestedSetBehavior и root

Сообщение Professor »

1. что это за режим и как его включать?
в установках 'hasManyRoots' => true,

2. Да можно цеплять и в обратном порядке и еще одно поле дописать, но хочется сделать что бы было логично.
root это же грубо говоря индитификатор группы. зачем создавать еще 1 такой индитификатор если поле предназначенное для этого уже есть?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: ENestedSetBehavior и root

Сообщение samdark »

1. Значит включен. Можно создавать корни.
Professor
Сообщения: 115
Зарегистрирован: 2010.11.25, 19:47
Контактная информация:

Re: ENestedSetBehavior и root

Сообщение Professor »

1) А как это делать что бы получалось так как я указал?
Что бы дерево в root создавалось с множеством вершин?
Или я не правильно понимаю логику?

А понимаю я так, Где root одинаков, там элементы принадлежат одному дереву.
Что бы получилось то что мне нужно

Первая папка
Вторая папка
-вложение в папку
Третья папка

получается 3 разных дерева
Неужели это нельзя сделать 1 деревом?
serzhiio
Сообщения: 60
Зарегистрирован: 2011.01.30, 14:09

Re: ENestedSetBehavior и root

Сообщение serzhiio »

Если Вам нужно посадить одно дерево - сажайте одно, если нужна поляна - сажайте поляну :)
Если у Вас включена функция hasManyRoots у Вас есть возможность создавать много деревьев, логически независимых друг от друга, в ином случае Вы можете создать только одну иерархию с одним корнем.
Professor
Сообщения: 115
Зарегистрирован: 2010.11.25, 19:47
Контактная информация:

Re: ENestedSetBehavior и root

Сообщение Professor »

Не поняли вы меня.
Мне нужна "поляна", много независимых друг от друга деревьев.
Но, нужно что бы у дерева была не одна вершина а несколько
Professor
Сообщения: 115
Зарегистрирован: 2010.11.25, 19:47
Контактная информация:

Re: ENestedSetBehavior и root

Сообщение Professor »

Ну или если по другому, то мне нужно просто вершину обрезать
Аватара пользователя
creocoder
Сообщения: 138
Зарегистрирован: 2010.01.24, 05:29
Откуда: Тамбов

Re: ENestedSetBehavior и root

Сообщение creocoder »

Professor писал(а):root это же грубо говоря индитификатор группы
Root это точно такой же узел как и все остальные.
Professor писал(а):зачем создавать еще 1 такой индитификатор если поле предназначенное для этого уже есть?
Это служебное поле, оно предназначено для распределения деревьев. Оно не должно использоваться как либо по другому.
Professor писал(а):У меня есть список объектов каждому я должен присвоить свое дерево
Вы сами отвечаете на свой вопрос. Создайте в таблице объектов поле в котором будет записан идентификатор корня дерева, которое принадлежит этому объекту. Это будет оптимальный вариант.
Ответить