0

我是 symfony2 的新手

如何在多个其他实体中重用一个实体?

比如说(其实是这样的)

我有一个名为 CustomVar 的实体

我的项目有项目、类别、产品。

我希望我的项目保存 customvars(onetomany),我的产品也保存 customvars(onetomany):

project 1:n customvar

product 1:n customvar

因此,在访问我的产品时,我可以访问项目级别的自定义变量,也可以访问产品级别的自定义变量。

我假设这些都将使用相同的对象,但我如何正确注释和使用它?

4

1 回答 1

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。

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

于 2012-07-04T11:12:52.373 回答