Symfony2 可重用实体



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

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

似乎我无法将原则 2 中的双向关系船定义为可重用的:

// pseudo PHP, just to illustrate.
/**
 * @manyToOne(targetEntity=B.E)
 * @entity
 */
class A.E() {}
/**
 * @oneToMany(targetEntity=B.E)
 * @entity
 */
class B.E() {}

我不能在不改变 A.E 的情况下用 C.E 替换 B.E。我已经习惯了python Django ORM,我不需要在每个实体中声明两个实体之间的关系,从而允许构建可重用的实体模型。

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

谢谢

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

class MyReusableEntity
{
    /**
     * @ORMManyToOne(targetEntity="MyVendorMyBundleMyInterface")
     * @var MyInterface
     */
    protected $myInterfaceRelation;
}

在每个项目中,您都可以使用它:

doctrine:
    orm:
        resolve_target_entities:
            MyVendorMyBundleMyInterface: MyConcreteClass

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

相关内容

  • 没有找到相关文章

最新更新