如何更改symfony 2 doctrine mapper以使用我的自定义目录而不是捆绑下的我的实体目录

Eli*_*son 8 php entity entity-framework symfony doctrine-orm

我在我的symfony 2.3应用程序中使用了doctrine.我想使用像这样的文件夹结构

/MyBundleName/User/User.php
Run Code Online (Sandbox Code Playgroud)

对于我的实体.

题:

反正我是否可以直接将doctrine ORM映射到使用显式目录而不是默认为Entity我的Bundle目录?

我想保留所有相关文件在各自的目录下,如ProductProvider

/MyBundleName/Product/ProductProvider.php
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

Cer*_*rad 14

只是对@ Imanol的正确答案进行跟进,可以将您的实体放在一个实体管理器下的多个目录中:

doctrine:
  orm:
    default_entity_manager:       default
    auto_generate_proxy_classes: %kernel.debug%

    entity_managers:

        default:
            connection: default
            mappings:

        test01:
            connection: test01
            mappings:
              product:
                type:      yml
                dir:       %kernel.root_dir%/../src/Cerad/Bundle/Test01Bundle/Product
                prefix:    Cerad\Bundle\Test01Bundle\Product
                alias:     Product
                is_bundle: false
              user:
                type:      yml
                dir:       %kernel.root_dir%/../src/Cerad/Bundle/Test01Bundle/User
                prefix:    Cerad\Bundle\Test01Bundle\User
                alias:     User
                is_bundle: false
Run Code Online (Sandbox Code Playgroud)

不要担心is_bundle:false条目.实体仍然可以捆绑在一起.学说不关心.如果您想知道,alias参数可以让您执行以下操作:

$repo = $em->getRepository("Product:Product");
Run Code Online (Sandbox Code Playgroud)


小智 4

你可以告诉 Doctrine 你的实体所在的目录

doctrine:
orm:
    auto_generate_proxy_classes: %kernel.debug%
    auto_mapping: false
    mappings:
        name:
            type: php
            dir: %kernel.root_dir%/../src/Company/CartoDBBundle/Tests/CartoDB/Entity
Run Code Online (Sandbox Code Playgroud)

这里有完整的Doctrine 配置文档

几天前我提出了类似的问题,您可以在那里阅读雪松给我的完整答案
类似的帖子