E
E
EVOSandru62015-01-20 13:28:03
MySQL
EVOSandru6, 2015-01-20 13:28:03

How in YII NestedSet to make sure that the node does not roll to the right when updating?

Good afternoon,
such a problem, I used a manual to implement NestedSet in a hierarchical table - webnotes.by/docs/php/yii/derevo-kategoriy-v-yii-s-...
There is an actionUpdate there . It seems that when the node is updated (any internal information on the table or link data), the node rolls to the right among brothers and sisters at the same level. What could be the problem and how to avoid it?
This piece inside actionUpdate in my controller

if(isset($_POST['Product']))
        {
            $code_par = (int)$_POST['Product']['CODE_PAR'];
            // Вытаскиваем родителя
            $node = Product::model()->findByPk($code_par);
            // Присваиваем атрибуты
            $model->attributes = $_POST['Product'];

            $model->CODE_PAR = (int)$code_par;
            $model->CAT = (int)$_POST['Product']['CAT'];
            $model->SALE = (int)$_POST['Product']['SALE'];
            $model->EXIST = (int)$_POST['Product']['EXIST'];
            $model->TEMPLATE = (int)$_POST['Product']['TEMPLATE'];

            // если это корень дерева и первый элемент с левым ключом, равным 1
            if($model->LFT == 1 || $model->CODE == $node->CODE){
                // Создание корня
                if($model->saveNode()){
                    Yii::app()->user->setFlash('category_error', "Структура дерева не изменена.");
                    $this->redirect(array('view','id'=>$model->CODE));
                }
            }
            // если выбрана какая то категория
            else{
                // Создаем узел
                if($model->saveNode()){
                    // если имеются потомки у узла
                    if($node->isDescendantOf($model))
                        Yii::app()->user->setFlash('category_error', "Структура дерева не изменена.");
                    // если имеются потомки
                    else
                        $model->moveAsLast($node);
                    $this->redirect(array('view','id'=>$model->CODE));
                }
            }
        }

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question