1

私の Symfony2 ブラウザゲームには、Doctrine 2 ORM を使用するユーザー エンティティがあります。ゲームにはクラシックとスピードの 2 つのインスタンスがあり、これらは主に互いに独立しており、両方の独自のデータベース (同じ構造) を使用しています。唯一の問題は、ユーザーが自分のアカウントを接続できることです。そのため、接続されたアカウントの基本的なユーザー情報が表示されます。そのために、別のユーザー エンティティに接続するプロパティとして、classic_id と speed_id を用意しています。しかし、それは私が知る限りDoctrine 2では不可能なクロスデータベース結合です。また、独自の接続を持つ複数のエンティティ マネージャーを持つことが可能であることもわかりましたが、それらは完全なバンドルにしか適用できないと思いますよね?

ここで、その問題の回避策が必要です。それを行う最も簡単な方法は何ですか?

4

1 に答える 1

2

実際にはクロス db 結合を行う可能性がありますが、これは機能というよりはトリックであり、使用はお勧めしません。

異なるエンティティ マネージャー間でエンティティを 1 つのバンドルから分離するには、管理対象エンティティを指す "dir" 属性を使用できます。例えば:

doctrine:
    orm:
        default_entity_manager:   default
        entity_managers:
            default:
                connection:       default
                mappings:
                    AppBundle:
                        dir:      Path/To/EntityFolder1
            anotherone:
                connection:       anotherconnection
                mappings:
                    AppBundle:
                        dir:      Path/To/EntityFolder2

文書化されていない「プレフィックス」オプションもありますが、それが何であるかはまだわかりません(自分で実験できます:))

ご挨拶!

于 2012-09-01T10:56:06.123 に答える