gpt4 book ai didi

php - Doctrine 2 preUpdate 事件 - 插入时未触发?

转载 作者:可可西里 更新时间:2023-11-01 12:50:16 27 4
gpt4 key购买 nike

我有一堆同时具有 date_created 和 date_modified 字段的实体,我试图让这些字段在插入或更新时自动设置。 date_created 仅在插入时设置,但 date_modified 在插入或更新时设置。

我的实体类中有一个带有@PreUpdate 注释的方法,但它似乎只在实体更新时才会被调用。插入新实体时不会调用它。文档是这样描述 preUpdate 事件的:

“preUpdate 事件发生在对实体数据进行数据库更新操作之前。”

这是正确的行为吗?如果是这样,在更新或插入之前调用方法的最佳方法是什么?目前,如果我同时使用 @PreUpdate 和 @PrePersist 标记该方法,那么它就可以工作,但我不确定这是否是最佳的:

/**
* @PreUpdate
* @PrePersist
*/
public function beforeSave()
{
if (!$this->getCreatedAt()) {
$this->setCreatedAt(new \DateTime());
}
$this->setModifiedAt(new \DateTime());
}

最佳答案

Persist 和 Update 是 2 个不同的事件,因此如果您希望对它们都应用回调,那么您将需要这两个注释。创建两个方法可能会消除您的疑虑:

/**
* @PrePersist
*/
public function beforePersist()
{
$this->setCreatedAt(new \DateTime());
$this->setModifiedAt(new \DateTime());
}

/**
* @PreUpdate
*/
public function beforeUpdate()
{
$this->setModifiedAt(new \DateTime());
}

关于php - Doctrine 2 preUpdate 事件 - 插入时未触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3754775/

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