【发布时间】:2013-02-01 10:47:45
【问题描述】:
我有一个具有许多关系的复杂实体,因此我需要在许多页面中创建多个表单来创建一个。因此,我使用会话来保留我的实体。 一切正常,但是到了刷新的时候,实体管理器返回“通过关系的实体未配置为级联持久化”,认为某些实体是新的,但它们实际上存储在 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 中的组,并且刷新会正常进行,但是由于我的实体具有如此多的关系,因此对每个实体都执行此操作非常方便。
对这个问题有什么想法吗?
【问题讨论】:
标签: session symfony entity-relationship entitymanager flush