serg_small_developer
@serg_small_developer
Начинающий прогер

Как запретить afterFind?

Всем привет, проблема с оптимизацией запросов, я в модели Profile сделал кастомную переменную в методе afterFind
public function afterFind()
{
        $this->projectGroup = $this->projectGroups;
	return;
}

$this->projectGroups - метод который получает данные со связанных таблиц через hasMany, так вот сделал я такую кастомную переменную потому что мне нужно некие дополнительные данные при сохранении или обновлении, но проблема в том что когда я делаю просто для вывода неких данных через GridView и делаю обращение через связи к полю из модели Profile, то эта переменная $this->projectGroup тоже срабатывает так как срабатывает afterFind и в конечном итоге стр. грузит долго и дебаг показывает тысячи запросов которые связаны с этой переменной, но она
мне не нужна тут, так вот можно ли как-то сказать чтобы afterFind срабатывал только в нужном мне месте и все, дабы
исключить запросы которые мне не нужны?
  • Вопрос задан
  • 175 просмотров
Решения вопроса 2
Убрать присвоение в afterFind.
Навесить сценарий на событие afterFind в нужном месте, и в нем реализовать присвоение
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Дополню верный ответ Евгений Бухарев еще одним вариантом:
Пишите behavior и в нем реализуете afterFind. Прелесть поведений (behaviors) в том что они без проблем отключаются и подключаются.
А в вашем случае возможно подойдет уже готовое:
https://www.yiiframework.com/doc/api/2.0/yii-behav...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы