我通过 Typo3 Flow 中的集合获得了一个与另一个对象具有多对多关系的对象。创建该对象的新实例(已成功添加到存储库)后,我可以简单地添加到此集合中。
abc模型的代码片段:
/**
* @var \Doctrine\Common\Collections\Collection<[..]\Domain\Model\Xyz>
* @ORM\ManyToMany(targetEntity="[..]\Domain\Model\Xyz")
*/
protected $xyzs;
[...]
public function getXYZs() {
return $this->xyzs;
}
public function addXYZ([..]\Domain\Model\Xyz $xyz) {
if(!$this->xyzs->contains($xyz))
$this->xyzs->add($xyz);
}
public function removeXYZ([..]\Domain\Model\Xyz $xyz) {
if($this->xyzs->contains($xyz))
$this->xyzs->removeElement($xyz);
}
问题是在将其添加到存储库之前,我无法将其添加到此集合中。(发生这种情况是因为我猜不存在外键)。
abc 控制器的代码片段(不起作用!):
public function addAction([...]\$newABC)
{
[...]
$this->abcRepository->add($newABC);
//the line below returns "can't use contains() / add() on a non-object"
$newABC->addXYZ($someXYZ);
[...]
}
在 addAction() 完全完成之前,abc 控制器中不存在 xyz 集合。但是如何在 addAction() 完成之前添加到这个集合中呢?