我所做的是修改我的公共 getCollection 方法。
private $collectionOfStuff; //this is a subclassed Doctrine\Common\Collections\ArrayCollection (MyCustomCollectionType in this case)
public function getCollectionOfStuff() {
if (!$this->collectionOfStuff instanceof MyCustomCollectionType) {
$this->collectionOfStuff = new MyCustomCollectionType($this->collectionOfStuff->toArray());
}
return $this->collectionOfStuff;
}
之后你必须使用 $this->getCollectionOfStuff() 来发挥你的魔力。
这不是最好的解决方案(我本可以构建一个代理或某种类型的),但是由于学说还不支持对 ArrayCollection 进行子类化,因此对我来说这是最快/最简单的解决方案。