我有一个拥有oneToMany关系的实体。相关实体通过第一个实体的id +另一个字段具有标识。我尝试在第一个实体上设置级联:[" persist"]但是当我试图坚持它时,它告诉我相关的实体不能被持久化,我首先必须刷新第一个实体。但是,如果我只是删除级联并刷新第一个实体,它会给出一个例外,说它不会持续存在,因为相关实体不会持久化,我应该设置为持续级联。
如何解决这个问题?想到的唯一解决方案是:
$relatedEntities = $entity1->getRelatedEntities();
$entity1->setRelatedEntities(new ArrayCollection());
$em->persist($entity1);
$em->flush($entity1);
$entity1->setRelatedEntities($relatedEntities);
$em->flush();
还有其他办法吗?
答案 0 :(得分:0)
因为错误说你必须先冲洗你的第一个实体。然后刷新相关实体。一些伪代码:
$entity_one = new Something();
//Now set object values
$em->persist($entity_one);
$em->flush();
$entity_two = new SomethingElse();
//Now set object values (set the related/relation to the first entity)
$em->persist($entity_two);
$em->flush()
我不完全确定你刷新它后需要将第一个实体设置为第二个实体。但你可以通过尝试找出它很容易;)