Oracle
 sql >> база данни >  >> RDS >> Oracle

Проблем с формата на Symfony + Doctrine Oracle DateTime

Създайте персонализиран DBAL тип, разширяващ DateTimeType и замени convertToPHPValue функция (копирах VarDateTimeType клас, който не можа успешно да преобразува типа дата, който моята инсталация на Oracle използва):

<?php

namespace YourCompany\SomeBundle\Doctrine\DBAL\Types;

use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\DBAL\Types\ConversionException;
use Doctrine\DBAL\Types\DateTimeType;

class SillyDateTimeType extends DateTimeType
{
    /**
     * {@inheritdoc}
     * @throws \Doctrine\DBAL\Types\ConversionException
     */
    public function convertToPHPValue($value, AbstractPlatform $platform)
    {
        if ($value === null || $value instanceof \DateTime) {
            return $value;
        }

        $val = \DateTime::createFromFormat('d-M-y H.i.s.u A', $value);
        if ( ! $val instanceof \DateTime) {
            throw ConversionException::conversionFailed($value, $this->getName());
        }

        return $val;
    }
}

Заменете $val = \DateTime::createFromFormat('d-M-y H.i.s.u A', $value); с какъвто и формат да се връща вашата инсталация за тези колони.

След това просто го регистрирайте под dbal в config.yml :

# app/config/config.yml
doctrine:
    dbal:
        types:
          sillydatetime: YourCompany\SomeBundle\Doctrine\DBAL\Types\SillyDateTimeType

Сега можете да използвате sillydatetime (или както го наричате) където и да е във вашите спецификации за тип колона.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. nPLS-00306:грешен номер или типове аргументи при повикване

  2. При какви условия ROWNUM=1 повишава значително производителността в заявка за съществуващ файл

  3. Oracle Data Access FileNotFound:Oracle.DataAccess.Common.Configuration.Section.xsd

  4. plsql процедура за сравняване на две таблици, където структурата на таблицата не е известна

  5. ИЗБЕРЕТЕ данни от друга схема в Oracle