如何将OracleSessionInit侦听器与Symfony2一起使用?

如何将OracleSessionInit侦听器与Symfony2一起使用?,symfony,doctrine,Symfony,Doctrine,我正在使用oracle,并收到以下错误: 无法将数据库值“11月17日12.17.33 AM”转换为条令类型datetime。预期格式:Y-m-d H:i:s 我也不能创建新行,因为oracle抱怨datetime格式 我知道mysql日期时间格式和oracle日期时间格式是不同的 我知道您可以将条令侦听器与symfony 2一起使用: 此外,还创建了一个原则监听器来解决这个问题: 条令/DBAL/Event/Listeners/OracleSessionInit.php 问题是你如何在sym

我正在使用oracle,并收到以下错误:

无法将数据库值“11月17日12.17.33 AM”转换为条令类型datetime。预期格式:Y-m-d H:i:s

我也不能创建新行,因为oracle抱怨datetime格式

我知道mysql日期时间格式和oracle日期时间格式是不同的

我知道您可以将条令侦听器与symfony 2一起使用:

此外,还创建了一个原则监听器来解决这个问题:

条令/DBAL/Event/Listeners/OracleSessionInit.php


问题是你如何在symfony 2中准确地打开它。

看来这次我会自己回答

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

app/config/config.yml 

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

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

在我的例子中,Oracle是第二个连接(存储在Oracle键下)。 该应用程序还使用了PostgreSQL(存储在default键下)

问题是侦听器是在默认数据库(PostgreSQL)上执行的。 因此,我将代码更改为:

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

一切都很好

我认为此链接将帮助您:

使用Symfony2和条令2连接到Oracle

  • 将Oracle的日期类型映射到OracleDriver的“DATE”类型,而不是“datetime”
  • 正确配置条令以使用最常见的Oracle日期和日期时间环境配置。你可能需要,也可能不需要。检查您的Oracle服务器配置

  • 我们欢迎您提供一个指向潜在解决方案的链接,但请务必这样做,以便您的其他用户了解它是什么,以及它为什么会出现。始终引用重要链接中最相关的部分,以防无法访问目标站点或永久脱机。考虑到仅仅是一个指向外部站点的链接是一个巨大的挑战。谢谢,你为我节省了这么多时间!!!注意:这似乎也适用于Symfony 3