sql >> データベース >  >> RDS >> Oracle

Symfony + DoctrineOracleDateTime形式の問題

    DateTimeTypeを拡張するカスタムDBALタイプを作成します 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. Rails:rake db:create:all(サーバーに接続できませんでした)

    2. c#mysqlに問題があります:行1の列の文字列値コード1366が正しくありません

    3. PostgreSQLのスキーマを使用したHibernateおよびマルチテナントデータベース

    4. DB::raw式を使用したPOINT/POLYGONなどのLaravelモデル