加载的实体实例上的原则更新事件



我对教义中的事件有问题,我需要已经加载的持久对象上的事件

$obj = $em->getRepository(EntityName::class)->findById($someId);
$obj2 = clone $obj;
$obj2->property = 'some value';
$obj->property = 'some diff value';
$em->persist($obj2);
$em->persist($obj);

我在事件@PrePersistEntityName类中注册事件,这对$obj2工作非常有效,但事件没有为$obj触发,有没有办法从$em->UnitOfWorks中删除$obj并为$obj触发事件。

诀窍是我必须在$em->flush()之前触发事件

@PrePersist仅在插入新实体时触发。 如果已经找到了上述现有实体,则需要使用@PreUpdate事件。

教义文档包含所有这些事件的信息。

当然,如果不知道您要做什么,并且看到您的@PrePersist代码,就不可能进一步帮助您。 您也许可以使用onFlush,就像 Cerad 建议的那样。 您可能需要prePersistpreUpdate

无论哪种方式,仅调用$em->persist()不能保证将触发prePersist事件。

最新更新