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

Jak*_*zak 2 php yaml symfony doctrine-orm

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

MyModel:
    type: yml
    dir: %kernel.root_dir%/../src/AppBundle/Resources/config/doctrine/MyModel
    prefix: MyProject\MyModel\Model
    is_bundle: false
Run Code Online (Sandbox Code Playgroud)

假设我有一个 entity 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

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

当然,对每个子文件夹都进行配置并不是一个解决方案。;-)

rom*_*gon 5

查看源代码,没有什么可以处理子文件夹。但是诀窍可能是将每个文件夹添加到不同的“映射”中,据我所知,这些文件夹不必坚持使用您的 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
Run Code Online (Sandbox Code Playgroud)

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