Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Problem z formatem Symfony + Doctrine Oracle DateTime

Utwórz niestandardowy typ DBAL rozszerzający DateTimeType i zastąp convertToPHPValue funkcja (skopiowałem VarDateTimeType klasy, która nie mogła pomyślnie przekonwertować typu Date, którego używała moja instalacja 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;
    }
}

Zastąp $val = \DateTime::createFromFormat('d-M-y H.i.s.u A', $value); bez względu na format, który Twoja instalacja zwraca dla tych kolumn.

Następnie po prostu zarejestruj go w dbal w config.yml :

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

Teraz możesz używać sillydatetime (lub jakkolwiek to nazwiesz) w dowolnym miejscu specyfikacji typu kolumny.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytania Oracle wykonywane przez sesję

  2. Jak wybrać kolumny z tabeli, które nie mają wartości null?

  3. Pierwsze kroki z Oracle SQL Developer na MacOSX

  4. Nie można zalogować się do bazy danych jako SYS za pomocą Oracle SQL Developer

  5. Brama PL/SQL w R11i