4

我开始负责一个大型的遗留 Web 应用程序,我正在尝试将它慢慢重构到 Symfony2 框架中。我做的第一件事就是把 Doctrine 包括进来。

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

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

我找不到任何关于如何像 Symfony2 那样告知 Doctrine 命名空间别名的参考资料,所以我可以写

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

反而。我怎样才能做到这一点?

4

2 回答 2

5

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

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

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

于 2014-08-13T11:50:02.677 回答
1

这个功能是由 DoctrineBridge 包在 Symfony2 中设置的,特别是getMappingDriverBundleConfigDefaults 函数

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

于 2012-10-11T12:50:17.923 回答