J'ai rencontré ce problème avec Doctrine 2.5 et SQL Server 2012. Le problème est que le champ de la base de données est de type DATETIME
, mais doctirne ne supporte que DATETIME2
sur SQLServer2008Platform et plus.
Vous ne devez pas modifier les fichiers dans votre répertoire de fournisseurs. La bonne réponse est de créer un type personnalisé :Types de mappage personnalisés Doctrine . Dans mon cas, j'ai étendu le DateTimeType actuel :
<?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;
}
}
Et puis dans le config.yml Symfony :
types:
datetime: AppBundle\Doctrine\Type\DateTime