我的情况是这样的,首先存在一个实体Person,它与实体Face具有OneToMany关系(当然还有ManyToOne的其他方法),并且每次更新Person实体时我可能会向Person添加一些额外的Face实体。基本上,它看起来是这样的:如何更新Symfony2中的相关实体
/**
* @ORM\OneToMany(targetEntity="Face", mappedBy="person", cascade={"persist"})
*/
private $faces;
...
/**
* @ORM\PrePersist()
* @ORM\PreUpdate()
*/
public function preUpload()
{
foreach ($this->images as $image) {
if (null === $image) {
break;
}
$face = new Face();
$face->setPerson($this);
$face->setImagePath(sha1(uniqid(mt_rand(), true)));
$this->addFace($face);
}
}
可正常工作,当我做坚持与一些面子实体首次的人,但是当我尝试更新现有的人更增添脸部的实体,我不能让他们坚持,应该发生的一切,除了没有新的Face实体被持久。
希望有人一直处于相同的情况,可以给我一些建议,和平!
在没有创建更新的情况下,您是否可以确认for循环的任何迭代都会越过'if(null === $ image)'? – Alex
正如我所说,除了坚持相关实体(它甚至以另一种方法上传文件)之外,它做的一切除外,实际工作的一个解决方案是在更新人员时刷新两次,然后它还会持续添加新添加的Face实体,但是,感觉像Symfony的方法来解决它... – Rikard
就我的理解而言,Person实体的更新不会触发相关实体上的任何持续级联,但是从我上面所述的他们在第二次冲洗,如果有人能够解释如何以正确的方式做到这一点,那将是太棒了。 – Rikard