如何在Symfony2中使用Doctrine OracleSessionInit监听器?

Mau*_*pez 15 doctrine symfony

我正在使用oracle,我收到了这个错误:

无法将数据库值"17-NOV-11 12.17.33 AM"转换为Doctrine Type datetime.预期格式:Ymd H:i:s

此外,我无法创建新行,因为oracle抱怨日期时间格式.

我知道mysql的datetime格式和oracle的格式不同.

我知道你可以使用symfony 2的教义监听器:

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

并且,有一个学说监听器来解决这个问题:

学说/ DBAL /事件/监听器/ OracleSessionInit.php

问题是如何在symfony 2中完全启用它.

Mau*_*pez 17

好吧看来我这次会回答自己.

您必须使用事件标记将其添加为服务.

app/config/config.yml 

services:
    my.listener:
        class: Doctrine\DBAL\Event\Listeners\OracleSessionInit 
        tags:
            - { name: doctrine.event_listener, event: postConnect }
Run Code Online (Sandbox Code Playgroud)

my.listener是侦听器的任意名称.


Tom*_*ter 9

在我看来,Oracle是第二个连接(存储在oracle密钥下).该应用程序还使用PostgreSQL(存储在默认密钥下).

问题是Listener是在默认数据库(PostgreSQL)上执行的.所以我将代码更改为:

services:
    my.oracle.listener:
        class: Doctrine\DBAL\Event\Listeners\OracleSessionInit
        tags:
            - { name: doctrine.event_listener, event: postConnect, connection: oracle }
Run Code Online (Sandbox Code Playgroud)

一切正常!