では、CustomVarを製品とプロジェクトの両方に関連付けたいですか?
class CustomVar {
/**
* @ORM\ManyToOne(targetEntity="Project", inversedBy="customVars")
* @ORM\JoinColumn(name="project_id", referencedColumnName="id", nullable=true)
*/
private $project;
/**
* @ORM\ManyToOne(targetEntity="Product", inversedBy="customVars")
* @ORM\JoinColumn(name="product_id", referencedColumnName="id", nullable=true)
*/
private $product;
}
私たちのプロジェクト(または製品)では、次のコードがあります:
class Project {
/**
* @ORM\OneToMany(targetEntity="CustomVar", mappedBy="project")
*/
private $customVars;
}
製品とプロジェクトが関連している場合は、$ product-> getProject()->getCustomVars()と$ product-> getCustomVars()を実行して、返されたArrayCollectionsを操作できます。
2つのオブジェクトの一方のみに関連させたい場合は、セッターに別の関係が設定されているかどうかをチェックさせ(プロジェクト変数と製品変数をテストすることにより)、それを自分のやり方で処理することができます(例外をスローする、何もしないなど) 。