【发布时间】:2015-02-10 13:31:35
【问题描述】:
我将 Doctrine 与 Symfony 一起使用,实体生成器在实体的构造函数中初始化集合。例如:
/**
* @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 还是两者都初始化?为什么?
【问题讨论】:
-
假设使用您的实体的客户端必须检查 null 值而不是计数零元素,以及我忽略的其他一些教义内容和行为......
标签: php symfony doctrine-orm