如何让Symfony2设置MySQL time_zone?

时间:2013-05-25 00:12:36

标签: php mysql symfony doctrine-orm timezone

如何在Symfony2中设置自定义驱动程序选项?

在这种情况下,我想在MySQL中运行SET time_zone = '-04:30'作为连接初始化的一部分。

2 个答案:

答案 0 :(得分:5)

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'"}

答案 1 :(得分:-1)

Symfony 1.4不同,没有default_timezone配置参数来设置Symfony2中的默认时区。我不确定原因,但是如果你想在应用程序中保留尽可能多的配置,那么请使用下面的代码。 通过覆盖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'

注意:从2.3版开始,init方法为deprecated,将在3.0中删除。您必须在构造函数中移动逻辑:

public function __construct($environment, $debug)
{
    date_default_timezone_set('Asia/Kolkata');
    parent::__construct($environment, $debug);
}