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 に答える