9

在 Symfony2 应用程序中,我有一个MainBundle和可以启用或不启用的不同包。在MainBundle我需要有Model和一个基本的Entity。在OtherBundle中,与MainBundle中的实体具有相同表名的实体

MainBundle 中的 Fixtures 需要加载或不加载 MainBundle 以外的其他包:

MainBundle
- Model 
- Entity (Table name "test")
- Fixtures 

OtherBundle
- Entity (Table name "test")
- Fixtures

OtherBundle2
- Entity (Table name="test")
- Fixtures

如果我对Model使用@ORM\MappedSuperclass ,在 MainBundle 中使用@ORM\Entity 在OtherBundle 中使用@ORM \ Entity,然后 Doctrine2 停止并出现错误“表已存在”。

我不能使用继承表,因为我的模型不需要了解其他包中的其他实体。@ORM \DiscriminatorMap不能指向OtherBundle

有没有办法做到这一点 ?

4

1 回答 1

1

正如 Jasper N. Brouwer 所提到的,它本质上是同一个实体和同一张表,所以做你想做的事情是没有意义的。

在一个名为“SharedEntityBundle”的包中创建您的实体,并使用resolve_target_entity与其他包中的该实体相关联,而无需彼此了解。

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

话虽如此,似乎有多个实体管理器的解决方案: Symfony 2 / Doctrine 2:同一张表的两个实体,使用一个来支持另一个

于 2014-11-06T13:53:12.170 回答