Detached entity error in Doctrine
我正在将一系列实体发布到控制器,我想删除所有这些实体。但是,以下代码引发
1 2 3 4 5 6 | $doctrineManager = $this->getDoctrine()->getManager(); foreach ($form->getData()->getEntities() as $entity) { $doctrineManager->merge($entity); $doctrineManager->remove($entity); } $doctrineManager->flush(); |
您应该对处于分离状态的实体使用合并操作,并且要将其置于托管状态。
应该像这样
1 2 3 4 5 6 | $doctrineManager = $this->getDoctrine()->getManager(); foreach ($form->getData()->getEntities() as $detachedEntity) { $entity = $doctrineManager->merge($detachedEntity); $doctrineManager->remove($entity); } $doctrineManager->flush(); |
但是,如果
1 2 3 4 5 | $doctrineManager = $this->getDoctrine()->getManager(); foreach ($form->getData()->getEntities() as $entity) { $doctrineManager->remove($entity); } $doctrineManager->flush(); |
此图像应帮助您了解实体状态转换。它取自Java Persistence API,但在Doctrine2中几乎相同。