【发布时间】:2013-05-20 15:48:17
【问题描述】:
如何在 Symfony2 中设置自定义驱动程序选项?
在这种情况下,我想在 MySQL 中运行 SET time_zone = '-04:30' 作为连接初始化的一部分。
【问题讨论】:
标签: php mysql symfony doctrine-orm timezone
如何在 Symfony2 中设置自定义驱动程序选项?
在这种情况下,我想在 MySQL 中运行 SET time_zone = '-04:30' 作为连接初始化的一部分。
【问题讨论】:
标签: php mysql symfony doctrine-orm timezone
与Symfony 1.4 不同,在 Symfony2 中没有 default_timezone 配置参数来设置默认时区。我不确定这是什么原因,但如果您喜欢在应用程序中保留尽可能多的配置,请使用下面的代码。
通过覆盖 AppKernel#init() 函数来设置默认时区(和任何类似的 PHP 配置)。记得打电话给它的父母。
<?php
// AppKernel.php
class AppKernel extends Kernel
{
//..
//.......
//...........
// --- Append the init function below ---
public function init()
{
date_default_timezone_set( 'Asia/Kolkata' );
parent::init();
}
}
或者你可以编辑php.ini
datetime = 'Asia/Kolkata'
注意: init 方法自 2.3 版起为 deprecated,将在 3.0 版中删除。您必须在构造函数中移动您的逻辑:
public function __construct($environment, $debug)
{
date_default_timezone_set('Asia/Kolkata');
parent::__construct($environment, $debug);
}
【讨论】:
symfony2 中不起作用,至少我找不到任何关于它的文档。
在app/config/config.yml中设置如下:
doctrine:
dbal:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
# Here we configure the custom driver options
# In this case is PDO::MYSQL_ATTR_INIT_COMMAND
# The constant can not be used in this context
options: {1002: "SET time_zone = '-04:30'"}
【讨论】: