停止prePersist LifeCycleEvent在Doctrine 2 Entity中递归

时间:2015-02-09 23:45:33

标签: php symfony recursion doctrine-orm entity

我正在使用prePersist LifeCycleEvent来更新实体,更新此实体会在对象重复保存到数据库时创建一个循环。

public function doSomething(LifecycleEventArgs $event)
{
     // Stuff here
     $em = $event->getEntityManager();
     $em->persist($entity);
     $em->flush();
}

如何在不导致递归循环的情况下让Entity自行更新?

1 个答案:

答案 0 :(得分:2)

由于在实际安排实体插入工作单元之前触发prePersist事件,您只需在此处更改实体状态,而无需手动调用persist / flush。

只需在回调中执行您的操作,而不必担心实体管理器。