我有一个具有许多关系的复杂实体,因此我需要在许多页面中创建多个表单来创建一个。因此,我使用会话来保留我的实体。一切正常,但是到了刷新的时候,实体管理器返回“通过关系的实体未配置为级联持久化”,认为某些实体是新的,但它们实际上存储在 db 中!
例如,我使用 $u->setGroup(Group $group); 创建了一个具有多对一组的用户;($group 是数据库中的现有组)。当我将它放入会话中,然后将其放回另一个页面然后刷新它时,实体管理器会尝试创建一个全新的组,但不知道它是 db 中的现有组。
我用一个小技巧来克服这个:
$u = $this->get('session')->get('userToAdd');
$group = $em->getRepository('MyBundle\Entity\Group')->find($u->getGroup()->getId());
$u->setGroup($group);
这样,EM 将识别存储在 db 中的组,并且刷新会正常进行,但是由于我的实体具有如此多的关系,因此对每个实体都执行此操作非常方便。
对这个问题有什么想法吗?