Symfony2可重用实体

时间:2014-01-10 10:40:00

标签: symfony doctrine-orm

我是我的一个项目我需要定义两个包A和B. 在项目A中,我有一个实体A.E,在项目B中,我有一个实体B.E。

我需要A.E和B.E.之间的双向关系。但是我还需要能够用另一个具有实体C.E的捆绑C替换捆绑B.然后我将用A.E-C.E相同的关系替换A.E-B.E双向关系。

似乎我无法在学说2中定义双向关系船可重复使用:

// pseudo PHP, just to illustrate.

/**
 * @manyToOne(targetEntity=B.E)
 * @entity
 */
class A.E() {}

/**
 * @oneToMany(targetEntity=B.E)
 * @entity
 */
class B.E() {}

我无法通过CE替换BE而不更改AE我已经习惯了python Django ORM,我不需要在每个实体中声明两个实体之间的关系,从而允许构建可重用的实体模型。 / p>

我找不到用symfony2构建这样一个可重用模型的方法。我可能误解了某些东西或者走错路。我帮忙吗?

由于

1 个答案:

答案 0 :(得分:3)

您可以使可重用实体与接口相关联。基本上是:

class MyReusableEntity
{
    /**
     * @ORM\ManyToOne(targetEntity="MyVendor\MyBundle\MyInterface")
     * @var MyInterface
     */
    protected $myInterfaceRelation;
}

在每个项目中你都使用它:

doctrine:
    orm:
        resolve_target_entities:
            MyVendor\MyBundle\MyInterface: My\Concrete\Class

文档:http://symfony.com/doc/current/cookbook/doctrine/resolve_target_entity.html