9

Symfony2 アプリケーションには、MainBundleと、有効または無効にできる個別のバンドルがあります。MainBundleには、Model基本的なEntityが必要です。OtherBundleでは、MainBundleEntityと同じテーブル名を持つEntity

MainBundle のフィクスチャは、 MainBundle 以外のバンドルの有無にかかわらずロードする必要があります。

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

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

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

Modelに @ORM\MappedSuperclass 、MainBundle の Entity に @ORM\Entity 、OtherBundle の@ORM \ Entityを使用場合Doctrine2は「テーブルが既に存在します」というエラーで停止します。

モデルが他のバンドル内の他のエンティティについて知る必要がないため、継承テーブルを使用できません。@ORM\DiscriminatorMapOtherBundleを指すことができません。

これを行う方法はありますか?

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: 同じテーブルに 2 つのエンティティ、一方を優先して使用

于 2014-11-06T13:53:12.170 に答える