Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Dottrina 2:impossibile aggiornare la colonna DateTime in SQL Server 2008apm

Ho riscontrato questo problema con Doctrine 2.5 e SQL Server 2012. Il problema è che il campo del database è di tipo DATETIME , ma doctirne supporta solo DATETIME2 su SQLServer2008Platform e versioni successive.

Non dovresti modificare i file nella directory del tuo fornitore. La risposta corretta è creare un tipo personalizzato:Tipi di mappatura personalizzata di Dottrine . Nel mio caso, ho esteso l'attuale DateTimeType:

<?php

namespace AppBundle\Doctrine\Type;

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

class DateTime extends DateTimeType
{
    private $dateTimeFormatString = 'Y-m-d H:i:s.000';

    public function convertToDatabaseValue($value, AbstractPlatform $platform)
    {
        return ($value !== null)
            ? $value->format($this->dateTimeFormatString) : null;
    }

}

E poi in Symfony config.yml:

    types:
      datetime: AppBundle\Doctrine\Type\DateTime