gpt4 book ai didi

php - Symfony2 - Doctrine - 更新后没有变更集

转载 作者:行者123 更新时间:2023-12-05 00:22:44 24 4
gpt4 key购买 nike

因此,当实体上的某个值发生更改时,我会发送一封电子邮件。我只希望在更新后发送电子邮件,以防更新因任何原因失败。所以在 preUpdate 我可以做到这一点

public function preUpdate(LifecycleEventArgs $args){

if ($args->hasChangedField('value') && is_null($args->getOldValue('value'))) {
$this->sendEmail();
}

}

但我需要在 postUpdate 上执行此操作,并且由于这些方法在 postUpdate 上不可用,我将其重构为如下所示:
public function postUpdate(LifecycleEventArgs $args){

$entity = $args->getEntity();
$changeSet = $args->getEntityManager()->getUnitOfWork()->getEntityChangeSet($entity);

if ($entity instanceof Entity && isset( $changeSet['value'] ) && empty( $changeSet['value'][0] )) {
$this->sendEmail();
}
}

然而,这会返回一个空的更改集,但是已经进行了更改并且可以在 preUpdate 中看到。谁能看到我做错了什么?帮助将不胜感激:)

最佳答案

preUpdate事件你得到类的事件对象 PreUpdateEventArgs您为实体设置了更改集。

postUpdate您只需获得类 LifecycleEventArgs 的事件对象您可以只要求更新实体(并获取它的最新状态)。

如果您想使用变更集,那么您需要在实际更新实体(preUpdate 事件)之前进行。

关于php - Symfony2 - Doctrine - 更新后没有变更集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35554634/

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