Symfony自定义日期时间类型不工作

Symfony自定义日期时间类型不工作,symfony,datetime,doctrine-orm,sqlsrv,Symfony,Datetime,Doctrine Orm,Sqlsrv,我有以下配置,我试图处理在2005兼容模式下运行的SQLServer2008,datetime怪癖 === config.yml # Doctrine Configuration doctrine: dbal: types: datetime2005: AppBundle\ORM\DBAL\DateTime2005Type === DateTime2005Type.php namespace AppBundle\ORM\DBAL; use Doctrine\DBA

我有以下配置,我试图处理在2005兼容模式下运行的SQLServer2008,datetime怪癖

=== config.yml
# Doctrine Configuration
doctrine:
  dbal:
    types:
      datetime2005: AppBundle\ORM\DBAL\DateTime2005Type



=== DateTime2005Type.php
namespace AppBundle\ORM\DBAL;

use Doctrine\DBAL\Types\DateTimeType as BaseDateTimeType;
use Doctrine\DBAL\Platforms\AbstractPlatform;

class DateTime2005Type extends BaseDateTimeType
{
    public function convertToDatabaseValue($value, AbstractPlatform $platform)
    {
        die();
    }
}
注意这里的die()。它应该停止执行我的应用程序,对吗

=== SomeEntity.php
/**
 * @ORM\Column(name="ErzDate", type="datetime2005", nullable=true)
 */
private $createdAt;
党卫军

所以我的自定义日期时间没有加载,或者,我实现错误了。请帮忙

  • 注册自定义条令类型的正确配置是什么
  • 我应该(重新)实现哪些功能以使条令使用自定义 日期时间的格式

自定义类型仅适用于persist和select表达式,而不适用于
WHERE
子句。这意味着对象在水合作用后将具有转换后的值

使用DQL查询时,convertToPHPValueSQL和convertToDatabaseValueSQL方法仅适用于SELECT子句中的标识变量和路径表达式。WHERE子句中的表达式未包装! 如果要在WHERE子句中使用点值,则必须实现用户定义的函数


也许你可以按照他们的建议解决这个问题。

:Facepalm:是的。就是这样。在该实体的回购协议中,我在
中插入了手动构建的日期。修正了这个问题,它又能工作了。大thx。
=== Rendered SQL & error:
An exception occurred while executing 'SELECT count(DISTINCT m0_.Ident) AS sclr0 FROM MedionOA3Requests m0_ WHERE m0_.Project LIKE ? AND m0_.ErzDate IS NOT NULL AND m0_.ErzDate >= ?' with params ["MANUALQUERY", "2016-02-13 00:00:00"]:

SQLSTATE [22007, 242]: [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Bei der Konvertierung eines nvarchar-Datentyps in einen datetime-Datentyp liegt der Wert außerhalb des gültigen Bereichs.