Как использовать слушатель Doctrine OracleSessionInit с Symfony2? - PullRequest
15 голосов
/ 17 ноября 2011

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

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

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

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

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

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

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

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

Вопрос в том, как именно включить его в Symfony 2.

Ответы [ 3 ]

17 голосов
/ 18 ноября 2011

Ну, кажется, я отвечу себе на этот раз.

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

app/config/config.yml 

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

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

8 голосов
/ 16 апреля 2014

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

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

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

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

0 голосов
/ 14 ноября 2016

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

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

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

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

...