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

Phi*_*ord 0 php entity doctrine namespaces symfony

我在这里关注文档:

这些是命令

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
Run Code Online (Sandbox Code Playgroud)

我在这里看到新的实体"

Acme/BlogBundle/AcmeBlogBundle/Entity
Run Code Online (Sandbox Code Playgroud)

但我想知道如何将实体添加到它们自己的命名空间中

Acme/BlogBundle/AcmeBlogBundle/Entity/Foo
Acme/BlogBundle/AcmeBlogBundle/Entity/Bar
Run Code Online (Sandbox Code Playgroud)

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

更新:

或者它应该像这样结构:

Acme/BlogBundle/AcmeBlogBundle/Foo/Entity
Acme/BlogBundle/AcmeBlogBundle/Bar/Entity
Run Code Online (Sandbox Code Playgroud)

思考?

Ahm*_*ani 7

如果您查看文档中的" 如何使用多个实体管理器和连接"部分,您会发现可以将捆绑实体绑定到一个或多个实体管理器.它们中的每一个都与特定的数据库连接相关.

例如,如果我已经定义了两个数据库连接(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/
Run Code Online (Sandbox Code Playgroud)

然后,您可以在实体生成过程的两个第一步中指定要使用的正确实体管理器,

php app/console doctrine:mapping:convert xml ./src/Acme/BlogBundle/Resources/config/doctrine/metadata/orm --from-database --force --em=first_manager --filter=MyTable
Run Code Online (Sandbox Code Playgroud)

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

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

php app/console doctrine:generate:entities AcmeBlogBundle
Run Code Online (Sandbox Code Playgroud)

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