1
我有以下Doctrine2实体:如何在Doctrine2 SELECT查询中处理DateTime类型的默认值?
<?php
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
/**
* @ORM\Entity
*/
class Account
{
use TimestampableEntity;
/**
* @var integer
*
* @ORM\Id
* @ORM\Column(type="integer", unique=true, nullable=false)
*/
private $id;
}
正如你可以看到我使用Gedmo Timestampable由包提供的Trait。它工作正常。
当我获取数据时,问题发生,并且列updated_at
即将到来
NULL
0000-00-00 00:00:00
。对于这样的情况下,DateTime
对象被翻译成无效日期如下图所示:
array (
'RowId' => 26944,
'synchflag' => 1,
'updatedAt' =>
DateTime::__set_state(array(
'date' => '-0001-11-30 00:00:00.000000',
'timezone_type' => 3,
'timezone' => 'UTC',
)),
)
我没有检查docs但没有任何帮助的(或至少我没有发现它,如果你让我知道)
什么是正确的方式来处理这个?
编辑:
也许在这里正确的问题应该是:如果updated_at
即将为0000-00-00 00:00:00
我怎么把它变成NOW()
?您可能会注意到getUpdatedAt()
根据获取的数据返回DateTime
。 SELECT
声明有任何事件吗?
在我的实体updated_at设置等于created_at。没有面对这个问题 –
你可以调试为什么你的updatedAt属性为空?创建实体触发器设置createdAt/updatedAt属性。 – miikes