Doctrine2 / Symfony2 - 同一个表上的多个实体

时间:2013-08-13 10:04:25

标签: symfony doctrine-orm multiple-inheritance mappedsuperclass

在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

有办法做到这一点吗?

1 个答案:

答案 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