Symfony2 で to-many 関連付けを使用して doctrine entites を自動生成すると、次のような結果が得られます。
/**
* Add child
*
* @param Acme\Entity\Child $child
* @return Parent
*/
public function addChild(\Acme\Entity\Child $child)
{
$this->children[] = $child;
return $this;
}
子の所有側との双方向の関連付けの場合 (OneToMany は通常このようなものです)、子を追加するたびに、次の行を追加する必要があります。
$parent->addChild($child);
$child->setParent($parent);
通常、次のように addChild メソッドを変更することになります。
/**
* Add child
*
* @param Acme\Entity\Child $child
* @return Parent
*/
public function addChild(\Acme\Entity\Child $child)
{
$this->children[] = $child;
$child->setParent($this)
return $this;
}
なぜこれがデフォルトで生成されたメソッドではないのか (双方向の場合)、またはアプリでの使用法を考えずにすべての双方向の関連付けに対してこれを行うことができるかどうか疑問に思っていました。
この慣行の欠点を理解できますか? 予期しない/望ましくない動作を引き起こす状況はありますか?
ありがとう。