Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Lehre 2:DateTime-Spalte kann auf SQL Server 2008apm nicht aktualisiert werden

Ich bin auf dieses Problem mit Doctrine 2.5 und SQL Server 2012 gestoßen. Das Problem ist, dass das Datenbankfeld vom Typ DATETIME ist , aber doctirne unterstützt nur DATETIME2 auf SQLServer2008Platform und höher.

Sie sollten keine Dateien in Ihrem Herstellerverzeichnis bearbeiten. Die richtige Antwort ist, einen benutzerdefinierten Typ zu erstellen:Benutzerdefinierte Zuordnungstypen der Lehre . In meinem Fall habe ich den aktuellen DateTimeType erweitert:

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

}

Und dann in der Symfony config.yml:

    types:
      datetime: AppBundle\Doctrine\Type\DateTime