Подскажите по NestedSetsBehavior в Yii2

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
SaintRu
Сообщения: 88
Зарегистрирован: 2020.05.13, 11:22
Контактная информация:

Подскажите по NestedSetsBehavior в Yii2

Сообщение SaintRu »

Есть сущность help:

Код: Выделить всё

    public function edit($title, $content, $icon)
    {
        $this->title = $title;
        $this->content = $content;
        $this->icon = $icon;
    }
    public function behaviors()
    {
        return [
            NestedSetsBehavior::class,
        ];
    }
    public function transactions()
    {
        return [
            self::SCENARIO_DEFAULT => self::OP_ALL
        ];
    }
Возникла такая проблема, при edit сущности (когда меняем только содержимое) NestedSetsBehavior пересчитывает lft и rgt и строка падает в самый конец списка, после каждого сохранения.
Как при edit запретить пересчет lft и rgt?
Сохраняется help в сервисе:

Код: Выделить всё

    public function edit($id, HelpForm $form): void
    {
        $page = $this->pages->get($id);
        $page->edit(
            $form->title,
            $form->content,
            $form->icon
        );
        if (!$page->isRoot()) {
            if ($form->parentId !== $page->parent->id) {
                $parent = $this->pages->get($form->parentId);
                $page->appendTo($parent);
            }
        }
        $this->pages->save($page);
        
    }
$this->pages - репозиторий, где только блок try в котором вызывается метод save ActiveRecord-а
Мой старт-ап ;) https://website39.site
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Подскажите по NestedSetsBehavior в Yii2

Сообщение maleks »

Пересчитывает явно из-за $page->appendTo.
Вот и продебажьте почему оно туда доходит.
Yii2 universal module sceleton - for basic and advanced templates
SaintRu
Сообщения: 88
Зарегистрирован: 2020.05.13, 11:22
Контактная информация:

Re: Подскажите по NestedSetsBehavior в Yii2

Сообщение SaintRu »

maleks писал(а): 2020.11.27, 07:39 Пересчитывает явно из-за $page->appendTo.
Вот и продебажьте почему оно туда доходит.
$page->appendTo - выполняется когда срабатывает условие:
($form->parentId !== $page->parent->id)
Это когда меняется родительский каталог, а в простом случае срабатывает поведение NestedSetsBehavior::class которое все и пересчитывает
Мой старт-ап ;) https://website39.site
Ответить