6

基本的に、3 つの異なるエンティティ マネージャー (およびその後、3 つの異なる MySQL データベース) に接続するコードのブランチがあります。残念ながら、2 つのデータベースには同じ名前のテーブルがあるため、すべてのエンティティを同じディレクトリに配置することはできません。構造上、とにかくそれを避けたいと考えています。

それで、私の質問は...どのように設定すれば、単一のエンティティバンドルを作成でき、サブディレクトリが下にEntity\あり、Resources\config\doctrine\

例えば

Acme\EntityBundle\Entity\DB1\Test.php
Acme\EntityBundle\Entity\DB1\Acme.php
Acme\EntityBundle\Entity\DB2\Test.php
Acme\EntityBundle\Entity\DB2\Foo.php
Acme\EntityBundle\Entity\DB3\Bar.php

そして同じ考えResources\config\doctrine\

構成は、ここで何をすべきかについて非常に曖昧です...

4

2 に答える 2

7

doctrine 設定ファイルの名前を変更するだけです。

たとえば、次のようになります。

  • Bundle/Entity/DB1/User.php
  • Bundle/Entity/DB2/User.php

それぞれの構成ファイルが生成されます (この場合は .yml、必要に応じて変更してください)

  • Bundle/Resources/config/doctrine/DB1.User.orm.yml
  • Bundle/Resources/config/doctrine/DB2.User.orm.yml
于 2014-11-03T09:08:57.270 に答える
4

エンティティを保存するためだけにバンドルが必要な場合は、エンティティを外部に保存することをお勧めします。このようにして、それらをフレームワークから切り離します。

どちらの場合も構成は似ています。参照は公式ドキュメントでアクセスできます。

次に例を示します。

#app/config/config.yml
doctrine:
    orm:
        auto_generate_proxy_classes: %kernel.debug%
        auto_mapping: true
        mappings:
            AcmeDB1:
                type:       xml
                is_bundle:  false
                dir:        %kernel.root_dir%/../src/Acme/Entity/DB1/config
                prefix:     Acme\Entity\DB1
                alias:      AcmeDB1
            AcmeDB2:
                type:       xml
                is_bundle:  false
                dir:        %kernel.root_dir%/../src/Acme/Entity/DB2/config
                prefix:     Acme\Entity\DB2
                alias:      AcmeDB2

いくつかのメモ:

  • dir はマッピング ディレクトリを指します。注釈を使用する場合、これはエンティティが配置されるディレクトリである必要があります。
  • プレフィックスはエンティティの名前空間の一部であり、一意である必要があります
  • エイリアスを使用すると、AcmeDB1:User などの短い名前空間でエンティティを参照できます
于 2013-01-25T22:58:43.817 に答える