在Symfony2应用程序中,我有一个 MainBundle 和不同的捆绑包,可以启用或不启用。在 MainBundle 中,我需要模型和基本实体。在 OtherBundle 实体中,其表名与 MainBundle 中的实体相同。
MainBundle中的灯具需要加载或不加载MainBundle以外的其他捆绑包:
MainBundle
- Model
- Entity (Table name "test")
- Fixtures
OtherBundle
- Entity (Table name "test")
- Fixtures
OtherBundle2
- Entity (Table name="test")
- Fixtures
如果我使用 @ORM \ MappedSuperclass 作为模型,实体 @ORM \ Entity > MainBundle 和 @ORM \ Entity OtherBundle ,然后Doctrine2停止,错误“表已存在”。
我无法使用继承表,因为我的模型不需要了解其他包中的其他实体。 @ORM \ DiscriminatorMap 无法指向 OtherBundle 。
有办法做到这一点吗?
答案 0 :(得分:1)
正如Jasper N. Brouwer所提到的,它实际上是同一个实体和同一个表,所以没有必要做你想做的事。
在名为“SharedEntityBundle”的捆绑包中创建您的实体,并使用 resolve_target_entity 与其他捆绑包中的此实体相关联,而无需了解彼此。
http://symfony.com/doc/current/cookbook/doctrine/resolve_target_entity.html
有人说,似乎有多个实体经理的解决方案: Symfony 2 / Doctrine 2: Two Entities for the same table, use one in favour of the other