acm*_*cme 9 mapping entity bundle symfony doctrine-orm
在我的标准Symfony2-app中,我有一堆捆绑包含一些实体.其中一些实体不在标准文件夹中,即教条的自动化发现(例如 /src/Acme/DemoBundle/Entities
)但位于不同的位置.
我可以很容易地config.yml
用来告诉学说使用这样的不同位置:
doctrine:
orm:
auto_mapping: false
mappings:
AcmeDemoBundle:
type: annotation
prefix: Acme\DemoBundle\Entities\
dir: %kernel.cache_dir%\Acme\DemoBundle\Entities
Run Code Online (Sandbox Code Playgroud)
这有效.但是说我有10个捆绑带有不同的映射,它config.yml
会变得非常快.有没有其他方法,例如使用CompilerPass或通过DependencyInjection,所以我不需要添加我的所有实体config.yml
?我已经看过了DoctrineBundle
,但到目前为止没有运气.
回答我自己:
最简单的方法就是调整自动加载,不需要修改设置。在 Symfony 的标准发行版中 autoload.php 中,您必须向 registerNamespace 方法添加另一个位置:
$loader->registerNamespaces(array(
[...]
'Foo' => array(__DIR__.'/../src/dirA', __DIR__.'/../src/dirB')
));
Run Code Online (Sandbox Code Playgroud)
然后,Doctrine 将首先在 dirA 中查找“Foo”命名空间中的实体,如果未找到,则在 dirB 中查找。
归档时间: |
|
查看次数: |
7067 次 |
最近记录: |