我可以在子文件夹中组织Doctrine YAML映射吗?

时间:2016-06-24 08:35:45

标签: php doctrine-orm yaml symfony

我在Symfony3项目中为Doctrine实体设置了自定义映射设置,如下所示:

MyModel:
    type: yml
    dir: %kernel.root_dir%/../src/AppBundle/Resources/config/doctrine/MyModel
    prefix: MyProject\MyModel\Model
    is_bundle: false

我们假设我有一个实体MyProject\MyModel\Model\SubNamespace\MyEntity。现在,我必须将其yml映射放在%kernel.root_dir%/../src/AppBundle/Resources/config/doctrine/MyModel/SubNamespace.MyEntity.orm.yml中,并且它可以正常工作。

我可以将Doctrine配置为能够组织子文件夹中的映射文件而不是文件名是前缀后命名空间部分的串联吗?

在这种情况下,如果是%kernel.root_dir%/../src/AppBundle/Resources/config/doctrine/MyModel/SubNamespace/MyEntity.orm.yml

原因是映射目录正在增长,并且很难在其中找到任何特定文件。

当然,这不是为每个子文件夹进行配置的解决方案。 ; - )

2 个答案:

答案 0 :(得分:2)

查看source code,没有什么可以处理子文件夹。但接下来的诀窍可能是将每个文件夹添加到另一个"映射",据我所知,那些不必坚持你的Symfony包:

doctrine:
    # ...
    orm:
        # ...
        mappings:
            AcmeBundleFoo:
                type: yml
                dir: AcmeBundle/Resources/doctrine/Foo
            AcmeBundleBar:
                type: yml
                is_prefix: false # you are free to let Symfony guess it or to be explicit
                dir: AcmeBundle/Resources/doctrine/Bar

有点冗长,但鉴于你的文件夹结构确实是src / AcmeBundle / Resources,它应该可以工作。

答案 1 :(得分:0)

是的,它在conf文件中:

doctrine:
    dbal:
        driver:   "%database_driver%"
        #etc

    orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        auto_mapping: false //default was true
        mappings:
            MySuperBundleName:
                type: yml
                dir: Resources/somewhereElse/doctrine // your specific directory