Доктрина Symfony - установить часовой пояс - PullRequest
0 голосов
/ 11 января 2019

У меня несколько приложений Symfony, работающих на одном сервере, и каждому приложению может потребоваться отдельный часовой пояс.

Для php это возможно, используя разные пулы fpm и устанавливая часовой пояс в конфигурации пула:

php_admin_value[date.timezone] = America/New_York

но для MySQL мне нужно выполнить инструкцию:

"SET time_zone = 'America/New_York';

в качестве первого запроса после подключения или добавьте в массив $ options в конструкторе PDO:

PDO::MYSQL_ATTR_INIT_COMMAND => "SET time_zone = 'America/New_York';"

Как это можно сделать?

1 Ответ

0 голосов
/ 13 января 2019

Вы можете использовать событие PostConnect Doctrine ... https://www.doctrine -project.org / projects / doctrine-dbal / ru / 2.9 / reference / events.html # postconnect-event

Это полезно для настройки соединения перед выполнением любого оператора sql.

Примером может быть:

<?php

namespace App\EventListener;

use Doctrine\DBAL\Event\ConnectionEventArgs;

/**
 * My initializer
 */
class  MyPdoInitializerListener
{
    public function postConnect(ConnectionEventArgs $args)
    {
        $args->getConnection()
            ->exec("SET time_zone = 'America/New_York'");
    }
}

Не забудьте добавить слушателя к services.yaml

# services.yaml

    # ...

    App\EventListener\MyPdoInitializerListener:
        tags:
            - { name: doctrine.event_listener, event: postConnect }
...