Выполнение запросов к БД после коннекта в Yii и Yii2
В некоторых проектах иногда требуется выполнять определенный набор запросов сразу после установления коннекта с БД. Яркий пример - установка таймзоны для MySQL. Конечно можно установить ее глобально, но это не всегда приемлемо (например, когда сайт находится на хостинге и нет возможности изменить настройки).
Для решения подобных задач в yii framework есть специальные настройки. Задаются они в файле конфигураций БД.
Для первой версии это массив запросов, который помещается в initSQLs
.
'initSQLs' => array( "SET time_zone = '+03:00'", ),
Пример аналогичного кода для второй версии фреймворка. Тут уже используются события и просто передать запросы недостаточно. Необходимо создать sql-комманду в обработчике события on afterOpen
.
'on afterOpen' => function($event) { $event->sender->createCommand("SET time_zone = '+03:00'")->execute(); }
Вот и все.