gpt4 book ai didi

php - 如何让 Gedmo\Timestampable 在首次创建时保持 update_at null ?

转载 作者:行者123 更新时间:2023-12-03 09:13:32 25 4
gpt4 key购买 nike

我有一个 Symfony 2.8 应用程序,它使用 Gedmo\Timestampable 注释进行自动 created_atupdated_at 操作,但它似乎首次创建实体/行时,将相同的时间戳放入 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;
...

该表将两列定义为 DATETIME 并且它们没有默认子句。

最佳答案

这是通过设计完成的,如果我们打开文件“vendor/gedmo/doctrine-extensions/lib/Gedmo/Timestampable/Timestampable.php”,第 22 行(在我的 Gedmo 版本上),我们可以看到:

/**                                                                                                                                                                                                                                                                           
* @gedmo:Timestampable(on="update")
* dates which should be updated on update and insert
*/

毕竟,插入也有点像表/记录的更新。如果您需要知道该对象是否是新创建的,您仍然可以在“createdAt”中存储的日期和“updatedAt”中存储的日期之间执行检查。

关于php - 如何让 Gedmo\Timestampable 在首次创建时保持 update_at null ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39638895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com