我对教义中的事件有问题,我需要已经加载的持久对象上的事件
$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);
我在事件@PrePersist
EntityName
类中注册事件,这对$obj2
工作非常有效,但事件没有为$obj
触发,有没有办法从$em->UnitOfWorks
中删除$obj
并为$obj
触发事件。
诀窍是我必须在$em->flush()
之前触发事件
@PrePersist仅在插入新实体时触发。 如果已经找到了上述现有实体,则需要使用@PreUpdate事件。
教义文档包含所有这些事件的信息。
当然,如果不知道您要做什么,并且看到您的@PrePersist
代码,就不可能进一步帮助您。 您也许可以使用onFlush
,就像 Cerad 建议的那样。 您可能需要prePersist
和preUpdate
。
无论哪种方式,仅调用$em->persist()
都不能保证将触发prePersist
事件。