Natrafiłem na ten problem z Doctrine 2.5 i SQL Server 2012. Problem polega na tym, że pole bazy danych ma typ DATETIME
, ale doctirne obsługuje tylko DATETIME2
na SQLServer2008Platform i nowszych.
Nie powinieneś edytować plików w katalogu dostawcy. Poprawną odpowiedzią jest utworzenie własnego typu:Typy niestandardowego mapowania Doctrine . W moim przypadku rozszerzyłem obecny 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;
}
}
A potem w pliku config.yml Symfony:
Typy types:
datetime: AppBundle\Doctrine\Type\DateTime