使用Doctrine将实体生成到单独的命名空间中

时间:2012-11-29 16:14:04

标签: php symfony namespaces doctrine entity

我在这里关注文档:

这些是命令

php app/console doctrine:mapping:convert xml ./src/Acme/BlogBundle/Resources/config/doctrine/metadata/orm --from-database --force
php app/console doctrine:mapping:import AcmeBlogBundle annotation
php app/console doctrine:generate:entities AcmeBlogBundle

我在“

中看到了新的实体
Acme/BlogBundle/AcmeBlogBundle/Entity

但我想知道如何将实体添加到他们自己的命名空间中,就像这样

Acme/BlogBundle/AcmeBlogBundle/Entity/Foo
Acme/BlogBundle/AcmeBlogBundle/Entity/Bar

这样我就可以将Foo和Bar数据库的实体分开。

更新:

或者它的结构应该是这样的:

Acme/BlogBundle/AcmeBlogBundle/Foo/Entity
Acme/BlogBundle/AcmeBlogBundle/Bar/Entity

思想?

1 个答案:

答案 0 :(得分:7)

如果您查看文档的How to work with Multiple Entity Managers and Connections部分,您会发现可以将捆绑实体绑定到一个或多个entity managers。其中每一个都与特定的数据库连接有关。

例如,如果我已经定义了两个数据库连接(first_connection和second_connection),我可以添加两个实体管理器,如下所示,

entity_managers:
    first_manager:
        connection:       first_connection
        mappings:
            MyBundle:
                dir:      Path/To/EntityFolder/Foo/
    second_manager:
        connection:       second_connection
        mappings:
            MyBundle:
                dir:      Path/To/EntityFolder/Bar/

然后,您可以指定在entity generation process的两个第一步中使用的正确实体管理器,

php app/console doctrine:mapping:convert xml ./src/Acme/BlogBundle/Resources/config/doctrine/metadata/orm --from-database --force --em=first_manager --filter=MyTable

注意: --filter选项用于允许您单独生成实体。

php app/console doctrine:mapping:import AcmeBlogBundle annotation --em=first_manager --filter=MyTable

php app/console doctrine:generate:entities AcmeBlogBundle

然后根据绑定的连接将您的实体放入正确的文件夹中。