Всем привет!
Подскажите,какой наипростейший способ, заставить при каждом старте MySQL сессии выполнять определнный запрос
SET time_zone = ‘America/Los_Angeles’;
Спасибо.
Всем привет!
Подскажите,какой наипростейший способ, заставить при каждом старте MySQL сессии выполнять определнный запрос
SET time_zone = ‘America/Los_Angeles’;
Спасибо.
Можно сделать расширяющий класс для CDbConnection и там это всё прописать.
и как потом заставить все классы которые будут работать с этим соединением работать, использовать этот перегруженный класс ?
Я имею ввиду что к примеру все они в итоги вызывают CDbCconnection для своих нужд.
А кто будет вызывать MyCDbConnection ? или я не прав ?
При каждом старте mysql или перед каждым запросом к базе?
Имеется ввиду конечно клиентом.
Если бы речь шла о старте сервера накой мне нужно это делать через Yii ?
А что на счет Behavior для CDbConnection?
убил
Насчет Behavior Я пока ничего не знаю
Пошел читать … понимать
http://www.yiiframework.com/doc/guide/extension.use#behavior
Там есть пример того, как в файле конфигурации подключается behavior к компоненте db
Честно говоря, покопался в исходниках yii и в документации и уже не уверен, что этот вариант подойдет.
Но ведь для чего-то behaviors поддерживаются в CDbConnection?
Но действительно другой и более верный - создать подкласс CDbConnection с перегрузкой нужных методов и использовать его.
Класс то можно перегрузить, только почему его начнет использовать приложение ? или что нужно сделать что бы начали ?
Спасибо.
Переписать соответствующие строки в файле конфигурации:
return array(
'components'=>array(
'db'=>array(
'class'=>'MyDbConnection',
),
//....
),
Вот нашел как я делал в одном приложении - с помощью перегрузки метода init() контроллера.
public function init()
{
// Устанавливаем временной пояс
date_default_timezone_set($user->timezone);
$tz = date("Z");
$tz = sprintf('%s%02d:%02d', ($tz < 0 ? '-' : '+'), abs($tz / 3600), abs($tz % 3600) / 60);
Yii::app()->db->createCommand('set @@session.time_zone = "' . $tz . '";')->execute();
return parent::init();
}
Хм… действительно.
Стоит попробовать.
Кстати а в какую папку этот свой класс надо положить ?
В любую подходящую, которая описана в конфигурации в массиве import.
Обычно это в папку components.
спасибо!