Doctrine的命名空间别名

时间:2012-10-11 08:32:57

标签: symfony namespaces doctrine

我负责一个大型遗留Web应用程序,我正在尝试将其慢慢地重构为Symfony2框架。我做的第一件事就是包括Doctrine。

我已经在Composer的帮助下安装了Doctrine,并为它设置了一个bootstrap文件。为了避免将来出现复杂情况,我的实体已经遵循命名空间方案Company\BundleName\Entity\Object。以下作品:

$em->getRepository('Company\\BundleName\\Entity\\Object')
   ->find($id)
;

我无法找到任何关于如何通过Symfony2告知Doctrine名称空间别名的参考,所以我可以写

$em->getRepository('CompanyBundleName:Object')
   ->find($id)
;

代替。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:4)

现在有一种更简单的方法:

$config = Setup::createAnnotationMetadataConfiguration(...);
$config->addEntityNamespace('CompanyBundleName', 'Company\BundleName\Entity');

会做你想要的。我花了好几个小时去找这个!它不在我能找到的任何文档中。

答案 1 :(得分:1)

此功能由DoctrineBridge软件包在Symfony2中设置,特别是getMappingDriverBundleConfigDefaults function

如果要在没有Symfony2的情况下反映此功能,则需要扩展Doctrine实体管理器并在getRepository函数中自己生成前缀。它不是Doctrine系统的一部分。