我的一个项目,我需要定义两个捆绑包 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