18 марта 2014 г., 18:01:52 Yii yii nested set active record 0 Комментариев
Как-то наткнулся на это https://github.com/yiiext/nested-set-behavior/issues/32 . Увидел, что человек уже 4 месяца ждёт ответа и решил разобраться.
Оказалось, что, если вы прикрепляете бехивёр через attachBehavior в контроллере,
$model->attachBehavior( 'nestedSetBehavior', array( 'class' => 'application.behaviors.NestedSetBehavior', 'leftAttribute' => 'lft', 'rightAttribute' => 'rgt', 'levelAttribute' => 'level', 'hasManyRoots' => true, ) );
То, бехивёр нужно прикреплять ко всем экземпляром моделей с которыми вы работаете, т.к. при прикреплении бехивёр прописывает свои свойства внутри экземпляра модели. Например, на гитхабе некий ptheofan решил, скорее всего, вставить новую запись как дочернию, т.е. родительская запись у него уже существовала. И он получил ошибку, т.к. для вставки как дочерний элемент нужно выполнить
$model->appendTo($model->findByPk($id));
а как известно, если кто внимательно изучил код, должен знать, что перед тем как вставить происходят ряд проверок. И одна из них как раз связана с свойством $_deleted получаемым через метод getIsDeletedRecord(). Поэтому товарищ ptheofan и получил Exception.
Комментарии [0]
Новый комментарий