Doctrine持有实体,其中相关实体以前实体为关键

时间:2014-10-03 14:48:04

标签: php orm doctrine

我有一个拥有oneToMany关系的实体。相关实体通过第一个实体的id +另一个字段具有标识。我尝试在第一个实体上设置级联:[" persist"]但是当我试图坚持它时,它告诉我相关的实体不能被持久化,我首先必须刷新第一个实体。但是,如果我只是删除级联并刷新第一个实体,它会给出一个例外,说它不会持续存在,因为相关实体不会持久化,我应该设置为持续级联。

如何解决这个问题?想到的唯一解决方案是:

$relatedEntities = $entity1->getRelatedEntities();
$entity1->setRelatedEntities(new ArrayCollection());
$em->persist($entity1);
$em->flush($entity1);

$entity1->setRelatedEntities($relatedEntities);
$em->flush();

还有其他办法吗?

1 个答案:

答案 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()

我不完全确定你刷新它后需要将第一个实体设置为第二个实体。但你可以通过尝试找出它很容易;)