Сблъсках се с този проблем с Doctrine 2.5 и SQL Server 2012. Проблемът е, че полето на базата данни е тип DATETIME
, но doctirne поддържа само DATETIME2
на SQLServer2008Platform и нагоре.
Не трябва да редактирате файлове в директорията на вашия доставчик. Правилният отговор е да създадете персонализиран тип:Доктрина Персонализирани типове съпоставяне . В моя случай разширих текущия 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;
}
}
И след това в Symfony config.yml:
types:
datetime: AppBundle\Doctrine\Type\DateTime