6

基本上,我有一个代码分支连接到三个不同的实体管理器(以及随后的三个不同的 MySQL 数据库)。不幸的是,其中两个数据库的表被命名为相同的东西,所以我不能将所有实体都放在同一个目录中,而且对于结构,我还是想避免这种情况。

所以,我的问题是......我将如何设置它,以便我可以拥有一个实体包,子目录位于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

您只需要重命名您的学说配置文件。

例如:

  • 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 指的是映射目录,如果您使用注释,这应该是放置实体的目录
  • 前缀是实体命名空间的一部分,它应该是唯一的
  • alias 使您可以使用较短的命名空间来引用您的实体,例如 AcmeDB1:User
于 2013-01-25T22:58:43.817 回答