Tôi đã gặp sự cố này với Doctrine 2.5 và SQL Server 2012. Sự cố là trường cơ sở dữ liệu là loại DATETIME
, nhưng doctirne chỉ hỗ trợ DATETIME2
trên SQLServer2008Platform trở lên.
Bạn không nên chỉnh sửa các tệp trong thư mục nhà cung cấp của mình. Câu trả lời đúng là tạo loại tùy chỉnh: Các loại ánh xạ tùy chỉnh của Doctrine . Trong trường hợp của tôi, tôi đã mở rộng DateTimeType hiện tại:
<?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;
}
}
Và sau đó trong config.yml của Symfony:
types:
datetime: AppBundle\Doctrine\Type\DateTime