sql >> Base de Datos >  >> RDS >> Sqlserver

Doctrine 2:no se puede actualizar la columna DateTime en SQL Server 2008apm

Me encontré con este problema con Doctrine 2.5 y SQL Server 2012. El problema es que el campo de la base de datos es tipo DATETIME , pero doctirne solo admite DATETIME2 en SQLServer2008Platform y superior.

No debe editar archivos en su directorio de proveedores. La respuesta correcta es crear un tipo personalizado:Tipos de asignación personalizados de Doctrine . En mi caso, extendí el DateTimeType actual:

<?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;
    }

}

Y luego en Symfony config.yml:

    types:
      datetime: AppBundle\Doctrine\Type\DateTime