yii2-slug-behavior непонятные запросы в базу

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
nekit44
Сообщения: 125
Зарегистрирован: 2015.10.27, 13:14

yii2-slug-behavior непонятные запросы в базу

Сообщение nekit44 »

Использую zelenin yii2-slug-behavior\

И не обращал внимания на количество запросов в базу, на странице с категорией товаров 600 запросов подобных этому:

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

SELECT EXISTS(SELECT * FROM `product` WHERE `slug`='-627')
F:\OpenServer\domains\site\vendor\zelenin\yii2-slug-behavior\Slug.php (105)
F:\OpenServer\domains\site\models\ProductSearch.php (75)
F:\OpenServer\domains\site\controllers\ProductController.php (68)
 
Меняется только цифры: WHERE `slug`='-624') и т.д.

Может кто подскажет в какую сторону копать чтобы убрать эти запросы?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: yii2-slug-behavior непонятные запросы в базу

Сообщение zelenin »

проверяется уникальность слага. по умолчанию слаг генерится во время валидации https://github.com/yiisoft/yii2/blob/ma ... r.php#L126
значит на странице вы запускаете валидацию поисковой модели, что логично.
нелогично подключать поведение слага у ПОИСКОВОЙ модели.
kwasti
Сообщения: 262
Зарегистрирован: 2016.01.28, 16:14

Re: yii2-slug-behavior непонятные запросы в базу

Сообщение kwasti »

по этому поводу из собственного опыта.
при генрации модели через gii создается соответствующий класс.
этот класс я никогда в проекте не изменяю.
для использования я создаю следующий класс, который является наследником, того, что создал gii
и уже следущие я уже наследую либо от первого либо от второго, зависит от ситуации.
первый класс - чистый, без каких-либо доработок с моей стороны, во второй я переопределяю методы, добавляю новые, добавляю behavior и т.д.
от такого подхода есть неплохой плюс. когда требуется пересоздать модель (например много изменений в структуре таблицы и не охота делать все ручками)
Аватара пользователя
Йож
Сообщения: 574
Зарегистрирован: 2015.08.26, 03:05

Re: yii2-slug-behavior непонятные запросы в базу

Сообщение Йож »

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

public function behaviors()
{
    return [
        'slug' => [
            'class' => 'Zelenin\yii\behaviors\Slug',
            'slugAttribute' => 'slug',
            'attribute' => 'name',
            'ensureUnique' => false //вот оно
        ]
    ];
} 
nekit44
Сообщения: 125
Зарегистрирован: 2015.10.27, 13:14

Re: yii2-slug-behavior непонятные запросы в базу

Сообщение nekit44 »

Йож, Спасибо за ответ!

С 680 запросов стало 50
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: yii2-slug-behavior непонятные запросы в базу

Сообщение zelenin »

nekit44 писал(а):Йож, Спасибо за ответ!

С 680 запросов стало 50
я не стал комментировать ответ Йожа, как а) не имеющий отношения к решению проблемы б) при уже присутствующем в теме руководстве к действию, но вижу что здравый рассудок не царит здесь.

Надо не отключать проверку на уникальность, а надо убрать поведения из search-моделей. Отключив првоерку, вы сломали себе валидацию в админке.
nekit44
Сообщения: 125
Зарегистрирован: 2015.10.27, 13:14

Re: yii2-slug-behavior непонятные запросы в базу

Сообщение nekit44 »

zelenin, да я уже понял что решение не то..
да но как быть если у меня 20 тысяч товаров и так все работает через поиск
Подскажите как убрать поведение из search-модели
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: yii2-slug-behavior непонятные запросы в базу

Сообщение zelenin »

nekit44 писал(а):zelenin, да я уже понял что решение не то..
да но как быть если у меня 20 тысяч товаров и так все работает через поиск
Подскажите как убрать поведение из search-модели
переопределить метод behaviors()
Аватара пользователя
Йож
Сообщения: 574
Зарегистрирован: 2015.08.26, 03:05

Re: yii2-slug-behavior непонятные запросы в базу

Сообщение Йож »

Мне, например, обычно в проектах не нужен уникальный slug :)
а в вопрос глубоко не вникал, и то верно
Ответить