yii nestedsetbehavior Настроить и использовать = yii nested sets, пример использования behavior (поведения)

Страничка данного расширения nestedsetbehavior располагается здесь
Я же частично переводу информацию по настройке данного расширения и приведу здесь пару примеров.
Основные методы и функции перечислены здесь

Поехали)

Качаем и забрасываем

Для начала качаем само расширение - как и написано на странице (http://www.yiiframework.com/extension/ne...) самый свежачок располагается на гитхаб-хостинге расширения(https://github.com/yiiext/nested-set-beh...) качаем оттуда NestedSetBehavior.php (ну или копипастим исходный код)
кидаем это файл в папку protected/components/ при этом должна быть настроена автоматическая подгрузка компонентов из данной папки.

Настройка

Всякая модель, элементы которой должны быть выстроены в некую иерархию посредством NestedSets должна объявить следующий метод "поведения", такого вида:

public function behaviors()
{
    return array(
        'NestedSetBehavior'=>array(
// перепишем путь как будто файл расширения лежит в protected/components
            'class'=>'application.components.NestedSetBehavior', // путь  в стиле "yii псевдонимов"   
            'leftAttribute'=>'lft',
            'rightAttribute'=>'rgt',
            'levelAttribute'=>'level',
    );
}

где

  'leftAttribute'=>'lft',
            'rightAttribute'=>'rgt',
            'levelAttribute'=>'level',

указывают на имена столбцом для соответствующих индексов (левого, правого ключа и номера "глубины" - уровня иерархии) - поля с данными именами должны присутствовать в таблице модели.

В частности - по умолчанию предлагается использовать такие схемы (пример для некоторой сущности "категория") -
для хранения многих деревьев в одной таблице:

CREATE TABLE `category` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `root` INT(10) UNSIGNED DEFAULT NULL,
  `lft` INT(10) UNSIGNED NOT NULL,
  `rgt` INT(10) UNSIGNED NOT NULL,
  `level` SMALLINT(5) UNSIGNED NOT NULL,
  PRIMARY KEY (`id`),
  KEY `root` (`root`),
  KEY `lft` (`lft`),
  KEY `rgt` (`rgt`),
  KEY `level` (`level`)
);

а для хранения одного дерева в одной таблице:

CREATE TABLE `category` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `lft` INT(10) UNSIGNED NOT NULL,
  `rgt` INT(10) UNSIGNED NOT NULL,
  `level` SMALLINT(5) UNSIGNED NOT NULL,
  PRIMARY KEY (`id`),
  KEY `lft` (`lft`),
  KEY `rgt` (`rgt`),
  KEY `level` (`level`)
);

Чтобы расширение "понимало" с одним или многими деревьями мы собираемся работать следует использовать параметр конфигурации hasManyRoots, который по умолчанию = false

Основные методы и функции перечислены здесь