我有一个Symfony 2.8应用程序,它使用Gedmo\Timestampable
注释进行自动created_at
和updated_at
操作,但它似乎将相同的时间戳放入{{1}首次创建实体/行时的列。 updated_at
确实会导致UPDATE
列显示更新的时间戳,但我希望此列为空白。
我的理解是,在updated_at
上,只应使用时间戳填充INSERT
列,并且created_at
应保持空白,因为它尚未更新。只有在第一次更新列后才能获得更新时间的值。
我是否正确期待这一点?我的代码/配置有问题吗?或者这个注释是否实际上按设计设置了两列的值?
我的updated_at
:
config.yml
我的实体:
...
stof_doctrine_extensions:
default_locale: "%locale%"
translation_fallback: true
orm:
default:
translatable: true
timestampable: true
...
该表将两列定义为...
/**
* An automatic timestamp of the creation.
*
* @var \DateTime $createdAt
* @Gedmo\Timestampable(on="create")
* @ORM\Column(name="created_at", type="datetime")
*/
public $createdAt;
/**
* An automatic timestamp of the updation.
*
* @var \DateTime $updatedAt
* @Gedmo\Timestampable(on="update")
* @ORM\Column(name="updated_at", type="datetime")
*/
protected $updatedAt;
...
,它们没有默认子句。
答案 0 :(得分:2)
这是通过设计完成的,因为我们可以看到我们是否打开文件" vendor / gedmo / doctrine-extensions / lib / Gedmo / Timestampable / Timestampable.php",第22行(在我的版本上) Gedmo):
/**
* @gedmo:Timestampable(on="update")
* dates which should be updated on update and insert
*/
毕竟,INSERT有点像表/记录的更新。如果您需要知道对象是否是新创建的,您仍然可以检查存储在" createdAt"以及存储在" updatedAt"。
中的那个