那么您希望 CustomVar 与 Product 和 Project 相关吗?
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。
如果您希望它只与两个对象之一相关,您可以让设置器检查是否设置了另一个关系(通过测试项目和产品变量),然后按您的方式处理它(抛出异常,默默地什么都不做等等) .