我在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
原因是映射目录正在增长,并且很难在其中找到任何特定文件。
当然,这不是为每个子文件夹进行配置的解决方案。 ; - )
答案 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