我是symfony2的新手
如何在多个其他实体中重新使用实体?
比如说(实际上就是这种情况)
我有一个名为CustomVar的实体
我的项目有项目,类别和产品。
我希望我的项目能够保存customvars(onetomany),而我的产品也能保存customvars(onetomany):
project 1:n customvar
product 1:n customvar
因此,在访问我的产品时,我可以访问项目级别的自定义变量,也可以访问产品级别的变量。
我假设这些都会使用相同的对象,但我如何正确地注释和使用它?
答案 0 :(得分:0)
那么您希望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。
如果你希望它只与两个对象中的一个相关,你可以让setter检查是否设置了另一个关系(通过测试项目和产品变量),然后按照你的方式处理它(抛出异常,默默无所事事,等等。)