php – Doctrine 2:无法在SQL Server 2008apm上更新DateTime coloumn

前端之家收集整理的这篇文章主要介绍了php – Doctrine 2:无法在SQL Server 2008apm上更新DateTime coloumn前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在Apache服务器上使用Doctrine 2.2和PHP 5.3.

到目前为止,我偶然发现了以下问题:
当我尝试更新datetime列时,我得到:
sqlSTATE [22007]:[Microsoft] [sql Server Native Client 10.0] [sql Server]从字符串转换日期和/或时间时转换失败.

我甚至走到了这么远的地方,然后使用它只用了1天来设置新的日期……相同的结果.

当我改为将数据库中的列和实体从datetime更改为日期时,它按预期运行.

我的主要问题是,有几个字段我需要使用datetime列.

这是我的代码

(birthdate是我改为日期的专栏……并且是我可能的少数专栏之一):

  1. //This returns the datetime object that represents birthdate from the database
  2. $help=$object->getBirthDate();
  3. $help->setTimestamp(mktime($time[0],$time[1],$time[2],$date[2],$date[1],$date[0]));
  4. $help->format(\DateTime::ISO8601);
  5. $object->setBirthDate($help);

有人知道这里的解决方法吗?

非常感谢任何帮助.

我在Doctrine 2.5和sql Server 2012中遇到了这个问题.问题是数据库字段是DATETIME类型,但是doctirne只支持sqlServer2008Platform及更高版本的DATETIME2.

您不应该编辑供应商目录中的文件.正确的答案是创建一个自定义类型:Doctrine Custom Mapping Types.在我的例子中,我扩展了当前的DateTimeType:

  1. <?PHP
  2.  
  3. namespace AppBundle\Doctrine\Type;
  4.  
  5. use Doctrine\DBAL\Types\DateTimeType;
  6. use Doctrine\DBAL\Platforms\AbstractPlatform;
  7.  
  8. class DateTime extends DateTimeType
  9. {
  10. private $dateTimeFormatString = 'Y-m-d H:i:s.000';
  11.  
  12. public function convertToDatabaseValue($value,AbstractPlatform $platform)
  13. {
  14. return ($value !== null)
  15. ? $value->format($this->dateTimeFormatString) : null;
  16. }
  17.  
  18. }

然后在Symfony config.yml中:

  1. types:
  2. datetime: AppBundle\Doctrine\Type\DateTime

猜你在找的PHP相关文章