Как использовать прослушиватель 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.
Ответы
Ответ 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