Q
删除实体
3
A
回答
8
按照Doctrine2 docs:
由于Doctrine无法保证在刷新操作的这一点上正确处理 参照完整性,所以更新实体的关联更改不会在 此事件中被允许。
这意味着您不应该在preUpdate
事件处理期间混淆实体。我建议你通过使用实体管理器将你的逻辑转移到服务层。写一个更新你的实体的具体方法,并在那里做所有复杂的东西。一个实体经理的一个很好的例子是FOSUserBundle的UserManager
2
如果您在preUpdate
事件监听器改变一个实体,你需要告诉工作单位重新计算该实体的变更:
$em = $eventArgs->getEntityManager();
$cm = $em->getClassMetadata(get_class($entity));
$em->getUnitOfWork()->recomputeSingleEntityChangeSet($cm, $entity);
+0
我已经这样做了。除了我正在创建和删除一些其他实体的实体更改外,这些创建和删除操作也不会被刷新。 – DavidW
+0
它不适用于相关的子实体。 – felipsmartins
相关问题
- 1. 删除实体
- 2. 实体删除
- 3. 删除HTML实体
- 4. 从删除实体
- 5. JPA - 删除实体
- 6. 删除HTML实体
- 7. 删除父实体
- 8. 删除父实体时未删除子实体
- 9. 实体框架:删除子实体
- 10. 删除实体与另一个实体
- 11. 级联删除实体内的实体
- 12. 删除实体的实体框架
- 13. 使用JPA删除实体
- 14. 防止删除实体
- 15. 从索引删除实体?
- 16. 休眠:删除实体
- 17. RIA服务实体删除
- 18. EclipseLink删除引用实体
- 19. 软删除,禁用实体
- 20. 实体删除策略
- 21. Codeigniter删除HTML实体
- 22. 删除实体战略
- 23. JPA:删除子实体
- 24. 删除相关实体Symfony2
- 25. JPA/Hibernate删除“子”实体
- 26. JPA EntityManager不删除实体
- 27. JPA /休眠删除实体
- 28. GAE ReferencePropertyResolveError - 删除父实体
- 29. 删除实体框架
- 30. 删除前更新实体
听起来很不错,谢谢。 – DavidW
我一直在寻找这个几个小时,一旦我把PreUpdate代码放入我的服务中,一切都变得简单了。感谢这个答案,这是最好的解决方案。 –