原则坚持实体,相关实体以前实体为关键


Doctrine persist entity with related entities having former entity as key

我有一个具有oneToMany关系的实体。相关实体通过第一个实体的id+另一个字段具有标识。我试图在第一个实体上设置cascade:["persistent"],但当我尝试将其持久化时,它"告诉"我相关实体无法持久化,我必须首先刷新第一个实体。但是,如果我简单地删除级联并刷新第一个实体,它将给出一个异常,说它不会持久化,因为相关实体没有持久化,我应该将持久化设置为级联。

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

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

还有别的办法吗?

由于错误提示您必须首先刷新第一个实体。然后刷新相关实体。一些伪代码:

$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()

我不完全确定刷新后是否需要将第一个实体设置为第二个实体