我正在Symfony中使用Doctrine,實體生成器會在實體的構造函數中初始化集合。例如:在構造函數中初始化集合有什麼用途
/**
* @var MyProject\MyBundle\Entity\Foo
*
* @ORM\ManyToMany(targetEntity="MyProject\MyBundle\Entity\Foo")
*/
private $foos;
public function __construct() {
$this->foos = new \Doctrine\Common\Collections\ArrayCollection();
}
我還可以Doctrine's best practices這...這是一個很好的做法,這樣做閱讀。
但問題是:什麼是興趣?
如果我在構造函數中刪除此行,我看不到任何更改。我想它是懶惰加載然後,但性能下降足夠大,花時間寫入構造函數(如果構造函數已經存在,app/console doctrine:generate:entities
命令不向構造函數提供新的ArrayCollection,所以我必須手動執行它)。
如果真的要做得更好,我應該爲所有關係做還是隻做nullable=false
?
想象一下OneToMany中的實體Car
與Wheel
(不能爲空)和OneToMany與Passenger
(可爲空)。我應該只初始化$wheels
還是兩者?爲什麼?
假設一個使用你的實體的客戶端必須檢查零值而不是零個元素的計數,以及其他一些我忽略的原則和行爲.... – Matteo 2015-02-10 14:09:58