voskobovich/yii2-linker-behavior

Дублирование запросов,страница обновления

Opened this issue · 1 comments

Не могу понять в чем причина, на странице обновления когда вывожу форму,
например

            <?= $form->field($modelShop, 'category_ids')->widget(Select2::classname(), [
                'data' => \common\models\Category::getAllList(),
                'options' => ['placeholder' => 'Выбрать категории','multiple' => true],
                'pluginOptions' => [
                    'allowClear' => true
                ],
            ]); ?>

            <?= $form->field($modelShop, 'country_ids')->widget(Select2::classname(), [
                'data' => $countryListArray,
                'options' => ['placeholder' => 'Выбрать страны','multiple' => true],
                'pluginOptions' => [
                    'allowClear' => true
                ],
            ]); ?>

Каждое такое поле, выполняет аж 9 запросов.Из них 4 дублируется.
yii debugger

У меня 2 поля таких category_ids, regions_ids итого +18 запросов.

Я не пойму или я что то делаю не так, или в чем может быть проблема.

    public function behaviors() {
        return [
            'relation' => [
                'class' => LinkerBehavior::className(),
                'relations' => [
                    'country_ids' => [
                        'countries',
                        'updater' => [
                            'class' => ManyToManySmartUpdater::class,
                        ]
                    ],
                    'category_ids' => [
                        'categories',
                        'updater' => [
                            'class' => ManyToManySmartUpdater::class,
                        ]
                    ],
                ],
            ],
        ];
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getShopCategories() {
        return $this->hasMany(ShopCategory::className(), ['shop_id' => 'id']);
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getCategories() {
        return $this->hasMany(Category::className(), ['id' => 'category_id'])->via('shopCategories');
    }

@xr0m3oz смахивает на то, что поведение каждый раз делает выборку при обращении к атрибуту модели сategory_ids и другим. Возможно это ошибка. Сможете продебажить и подправить логику?