relations вызывается много раз. может можно сделать singelton

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
webplus
Сообщения: 336
Зарегистрирован: 2012.02.24, 22:05

relations вызывается много раз. может можно сделать singelton

Сообщение webplus »

Здравствуйте!
Есть в модели

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

	public function relations()
	{

            'cities'    =>  array(self::HAS_MANY,  'Cities', 'country_id', 'on' => "cities.vis = '1' AND cities.nocity = 0", 'order' => "cities.posled"),
            'citiesgroups'    =>  array(self::HAS_MANY,  'CitiesGroup', 'country_id', 'on' => "citiesgroups.vis = '1'", 'order' => "citiesgroups.posled"),
	}
В общем yii-debug-toolbar пишет что эти запросы вызываются на сайте по 1,320 раз.
Как реализовать в relations singelton чтобы снизить нагрузку?
Сайт по работе в Украине: https://jobis.com.ua/. Сайт по поиску строителей: https://stroyzakaz.com.ua/
Создание сайтов в Киеве: https://webplus.com.ua/ по доступной цене.
Аватара пользователя
webplus
Сообщения: 336
Зарегистрирован: 2012.02.24, 22:05

Re: relations вызывается много раз. может можно сделать singelton

Сообщение webplus »

ElisDN писал(а): 2019.04.26, 13:51 Использовать жадную загрузку
ну ->with('author') стоит в запросах, а может не with надо?
можно пример как? спасибо
Сайт по работе в Украине: https://jobis.com.ua/. Сайт по поиску строителей: https://stroyzakaz.com.ua/
Создание сайтов в Киеве: https://webplus.com.ua/ по доступной цене.
Аватара пользователя
webplus
Сообщения: 336
Зарегистрирован: 2012.02.24, 22:05

Re: relations вызывается много раз. может можно сделать singelton

Сообщение webplus »

ElisDN писал(а): 2019.04.26, 13:51 Использовать жадную загрузку.
Сработало! Все супер! кол-во с 1568 сократилось до 50 на всей страницы. Этот запрос начал один раз отрабатывать. Сайт летает!
Сайт по работе в Украине: https://jobis.com.ua/. Сайт по поиску строителей: https://stroyzakaz.com.ua/
Создание сайтов в Киеве: https://webplus.com.ua/ по доступной цене.
Ответить