Советы PHP-разработчика

Блог содержащий короткие заметки касающиеся программирования для web.

Выполнение запросов к БД после коннекта в 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();
}

Вот и все.

  • 2014-12-26 19:07:57