小编dal*_*sma的帖子

Symfony + Doctrine Oracle DateTime 格式问题

我在 Symfony 2.7 + Doctrine 中遇到了 Oracle DateTime 类型的问题。我有一个带有 DateTime 列的表,它通过 Doctrine 映射到 Symfony 中。

当我尝试持久化相关实体时,出现以下错误:

无法将数据库值“31-MAY-16 03.56.49.000000 PM”转换为 Doctrine Type 日期时间。预期格式:Ymd H:i:s 文件:.../vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/ConversionException.php 行:63

我无法更改 Oracle 数据库中的默认格式。我以前对矫正方法固定的问题getDateTimeFormatString()vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/OraclePlatform.php和它的工作。

但是,由于我必须使用 Git 和“composer install ...”才能在生产环境中部署我的应用程序,因此所有供应商都从 Symfony 存储库安装;这样我就失去了我所做的改变OraclePlatform.php

为了在不触及 verdors 库的情况下解决问题,我尝试在 httpd init 启动脚本上设置以下 Oracle ENV 变量,但它不起作用

export NLS_TIME_FORMAT="HH24:MI:SS"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export NLS_TIMESTAMP_FORMAT="YYYY-MM-DD HH24:MI:SS"
export NLS_TIMESTAMP_TZ_FORMAT="YYYY-MM-DD HH24 :MI:SS TZH:TZM"

我在关于 PostgreSQL 的 Doctrine 文档中的已知供应商问题中找到了一个可能的解决方案,他们建议通过覆盖这样的类型来使用VarDateTimeType

use Doctrine\DBAL\Types\Type;

Type::overrideType('datetime', 'Doctrine\DBAL\Types\VarDateTimeType');
Type::overrideType('datetimetz', 'Doctrine\DBAL\Types\VarDateTimeType');
Type::overrideType('time', 'Doctrine\DBAL\Types\VarDateTimeType');
Run Code Online (Sandbox Code Playgroud)

这似乎是解决方案,但是我不知道如何使用上面的代码覆盖类型,但主要是将上面的代码放在哪里。 …

php oracle doctrine symfony

5
推荐指数
1
解决办法
2903
查看次数

标签 统计

doctrine ×1

oracle ×1

php ×1

symfony ×1