【发布时间】:2017-06-06 19:50:25
【问题描述】:
我有以下 Doctrine2 实体:
<?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 以 NULL0000-00-00 00:00:00 的形式出现时,就会出现问题。对于这种情况,DateTime 对象将被转换为 invalid 日期,如下所示:
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 属性。
标签: php symfony doctrine-orm doctrine