Заполнение NESTED SETS

Добрый день! Yii начал изучать совсем недавно, если что.

У меня есть БД с NESTED SETS. Дерево однорутовое, сам рут я внёс вручную. Предполагается, что пользователь будет вносить вложенные каталоги самостоятельно. По моему разумению - так:

Жмем Создать, попадаем на create_var, выбираем, что именно создаем (каталог первого, второго или третьего уровня), перенаправление на create, откуда, в соответствии с выбранным уровнем, происходит перенаправление на _form_lvl1 (к примеру). Форма отображает textField для передачи названия каталога. Соответственно контроллер передает название в экземпляр модели, который создает новую запись в таблице. Я переопределяю метод beforeSafe для обновления ключей существующего дерева и добавления нового узла


$sqlUpdate = "update spisok set rgt = rgt + 2, lft = if(lft>:rgt, lft + 2, lft) where rgt >= :rgt" ;

		//:rgt - здесь плейсхолдер, который нужно заменить значением rgt ключа родительского узла

$parametersUpdate = array(":rgt" => spisok::model() -> findByPk($id) -> rgt);// <- вот сюда должно передаться значение родительского правого ключа

Yii::app()->db->createCommand($sqlUpdate)->execute($parametersUpdate);



Остаётся вытащить id родительского каталога при создании нового и передать его в модель. Вот с этим у меня проблемы. Я не соображу, как мне вытащить id даже из рута дерева (id=1 lvl=0 lft=1 rgt=2).

Буду признателен за любой конструктивный совет по теме.

Посмотрите это расширение - http://www.yiiframework.com/extension/nestedsetbehavior/

Сложновато для понимания, но, кажется, то, что нужно. Разбираюсь. Спасибо))

В контроллере при добавлении узла (использую поведение по ссылке выше), я нахожу id родительского узла как


$root=spisok::model()->findByPk($node->parent_id); 

, где root - корень дерева, а node, соответственно, добавляемый узел (в $node в данном действии создается модель spisok).

Parent_id получаю из представления _form


<?php echo CHtml::activeDropDownList($node,

'parent_id',

CHtml::listData(spisok::model()->findAll(array('condition'=>'level=0', 'order'=>'lft ASC')),'id','name'),

В модели у меня указан новый атрибут public $parent_id

я нахожу id родительского узла … = $node->parent()->find()

Дело в том, что я, может, неверно понял метод parent(). Я полагал, что метод parent() используется для нахождения родителя уже существующего узла, в то время, как мне требовалось найти родителя создаваемому узлу. Я ошибаюсь?

нет, вы правы, смутило $node ( а node, соответственно, добавляемый узел)

тогда все равно правильнее, логичнее читабильнее через appendTo