Yii Framework Forum: Заполнение NESTED SETS - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Заполнение NESTED SETS Rate Topic: -----

#1 User is offline   Siverius 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 5
  • Joined: 17-July 12

Posted 06 September 2012 - 08:40 AM

Добрый день! 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).

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

#2 User is offline   seb 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 228
  • Joined: 29-June 09

Posted 07 September 2012 - 08:57 AM

Посмотрите это расширение - http://www.yiiframew...tedsetbehavior/
0

#3 User is offline   Siverius 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 5
  • Joined: 17-July 12

Posted 10 September 2012 - 03:31 AM

View Postseb, on 07 September 2012 - 08:57 AM, said:

Посмотрите это расширение - http://www.yiiframew...tedsetbehavior/



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

#4 User is offline   Siverius 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 5
  • Joined: 17-July 12

Posted 25 September 2012 - 04:11 AM

В контроллере при добавлении узла (использую поведение по ссылке выше), я нахожу 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
0

#5 User is offline   lancecoder 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 24
  • Joined: 13-July 12

Posted 25 September 2012 - 05:43 AM

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

#6 User is offline   Siverius 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 5
  • Joined: 17-July 12

Posted 25 September 2012 - 06:40 AM

View Postlancecoder, on 25 September 2012 - 05:43 AM, said:

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


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

#7 User is offline   lancecoder 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 24
  • Joined: 13-July 12

Posted 25 September 2012 - 06:57 AM

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

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

2 User(s) are reading this topic
0 members, 2 guests, 0 anonymous users