У меня проблема с типом Oracle DateTime в Symfony 2.7 + Doctrine. У меня есть стол с столбцом DateTime, который отображается в Symfony через Doctrine.Symfony + Doctrine Oracle DateTime issue issue
Когда я пытаюсь persiste относительного Entity я получил следующее сообщение об ошибке:
Could not convert database value "31-MAY-16 03.56.49.000000 PM" to Doctrine Type datetime. Expected format: Y-m-d H:i:s File: .../vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/ConversionException.php Line: 63
Я не могу изменить формат по умолчанию в базе данных Oracle. Я ранее исправил проблему, изменив метод getDateTimeFormatString()
в vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/OraclePlatform.php
и работал.
Однако, поскольку для развертывания моего приложения в рабочей среде я должен использовать Git и «компоновщик установки ...», все поставщики устанавливаются из репозитория Symfony; таким образом я потеряю изменения, которые я сделал в OraclePlatform.php
Чтобы решить эту проблему, не касаясь библиотеки verdors, я попытался установить следующие переменные Oracle ENV на HTTPD инициализации запуска сценария, но он не работает
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"
я нашел возможное решение в Known Vendor Issues в документации Doctrine о PostgreSQL, где они предлагают использовать 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');
Этот шов является решением, однако я понятия не имею, как переопределить тип с помощью кода выше, но в основном, где поставить вышеуказанный код.
Есть ли у кого-нибудь идеи? С благодарностью
P.S. Я использую DateTime без часового пояса
можете ли вы точно сказать, что такое тип столбца в Oracle? Версия базы данных Oracle. а также определение вашей собственности в доктрине –
Точный тип столбца - ** TIMESTAMP **. Тип свойства Entity - ** DateTime **. Я импортировал сопоставление из существующей базы данных. Версия Oracle - это ** 11.2.0 ** – dalesma