Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Doutrina 2:Não é possível atualizar a coluna DateTime no SQL Server 2008apm


Eu me deparei com este problema com o Doctrine 2.5 e SQL Server 2012. O problema é que o campo do banco de dados é do tipo DATETIME , mas o doctirne suporta apenas DATETIME2 na plataforma SQLServer2008 e superior.

Você não deve editar arquivos em seu diretório de fornecedores. A resposta correta é criar um tipo personalizado:Tipos de Mapeamento Personalizado do Doctrine . No meu caso, estendi o DateTimeType atual:
<?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 então no Symfony config.yml:
    types:
      datetime: AppBundle\Doctrine\Type\DateTime