我成爲了一個大型遺留Web應用程序的負責人,我試圖慢慢地將其重構爲Symfony2框架。我做的第一件事就是包括教義。Doctrine的名稱空間別名
我已經在Composer的幫助下安裝了Doctrine,併爲它設置了一個引導文件。我的實體爲了避免未來的複雜性,已經遵循命名空間方案Company\BundleName\Entity\Object
。以下作品:
$em->getRepository('Company\\BundleName\\Entity\\Object')
->find($id)
;
我無法找到如何告知命名空間別名的學說作爲Symfony2中是否有任何引用,這樣我就可以寫
$em->getRepository('CompanyBundleName:Object')
->find($id)
;
代替。我怎樣才能做到這一點?
你的包設置是否正確(使用CompanyBundle.php文件,並在AppKernel.php中註冊)? – domudall
你讀過我寫的嗎?除了學說之外,還沒有成立 - 計劃將來會遷移到Symfony2。目前還沒有捆綁包 - 我只是將我的實體命名爲空間以避免將來出現問題。我想知道如何手動設置名稱空間別名與Doctrine。 – nijansen
這個功能是由DoctrineBridge包在Symfony2中設置的,特別是getMappingDriverBundleConfigDefaults函數 - https://github.com/symfony/DoctrineBridge/blob/master/DependencyInjection/AbstractDoctrineExtension.php#L166 如果你想反映這個沒有Symfony2的功能,你需要擴展Doctrine實體管理器並在getRepository函數中自己生成前綴。它不是教義系統的一部分。 – domudall