Подтвердить что ты не робот

Как использовать прослушиватель OracleSessionInit с Symfony2?

Я использую oracle, и я получаю эту ошибку:

Не удалось преобразовать значение базы данных "17-NOV-11 12.17.33 AM" в тип и дату Доктрины. Ожидаемый формат: Y-m-d H: i: s

Также я не могу создавать новые строки, потому что жалобы оракула относительно формата даты и времени.

Я знаю, что формат mysql datetime и oracle один разные.

Я понимаю, что вы можете использовать слушателей доктрины с symfony 2:

http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.html

И, чтобы создать эту проблему, есть слушатель доктрины:

Doctrine/DBAL/Событие/Слушатели/OracleSessionInit.php

Вопрос в том, как именно ваша очередь включается в symfony 2.

4b9b3361

Ответ 1

Ну, похоже, я отвечу на этот раз.

Вы должны добавить его как услугу, используя тег события.

app/config/config.yml 

services:
    my.listener:
        class: Doctrine\DBAL\Event\Listeners\OracleSessionInit 
        tags:
            - { name: doctrine.event_listener, event: postConnect }

my.listener - это произвольное имя для слушателя.

Ответ 2

В моем случае Oracle было вторым соединением (хранилось в оракуле). Приложение также использовало PostgreSQL (хранилось в по умолчанию).

Проблема заключалась в том, что Listener был выполнен в базе данных по умолчанию (PostgreSQL). Поэтому я изменил код на:

services:
    my.oracle.listener:
        class: Doctrine\DBAL\Event\Listeners\OracleSessionInit
        tags:
            - { name: doctrine.event_listener, event: postConnect, connection: oracle }

И все работает отлично!

Ответ 3

Я думаю, эта ссылка вам поможет:

Подключение к Oracle с Symfony2 и Doctrine 2.

  • Отобразить тип DATE Oracle для типа "дата" Doctrine вместо "datetime" для драйвера Oracle.
  • Правильно настраивает Doctrine для использования наиболее распространенных конфигураций среды Oracle Date и DateTime. Вы можете или не нуждаться в этом. Проверьте конфигурацию сервера Oracle.

https://gist.github.com/johnkary/6481664#file-oracledoctrinetypemappinglistener-php