これを行う方法がわかりません。
Symfony2 でサービスを作成します。このサービスには、リクエストと教義のエンティティ マネージャー サービスを使用する必要があります。
services.yml に次の行を追加します。
logdb:
class: %logdb.class%
arguments: ['@doctrine.orm.entity_manager','@request_injector']
私のサービスクラス:
class LogDB {
protected $em;
protected $request;
public function __construct(EntityManager $em, Request $request){
$this->em= $em;
$this->request= $request;
}
public function saveLog(){
}
}
さて、saveLog() では、entitymanager にアクセスする必要がありますが、デフォルトの別のマネージャーから、「@doctrine.orm.entity_manager」で注入しているエンティティ マネージャーがデフォルトです。
コントローラーでこれを行うことができます:
$em = $this->getDoctrine()->getManager($this->getRequest()->get('shop'));
私は、url パラメーターで選択したすべてのショップにさまざまなデータベースを使用しています。サービスからカスタムエンティティマネージャーにアクセスするにはどうすればよいですか?
コンテナを注入するのは悪い解決策です...
たぶん、コントローラーからのすべてのサービスメソッドでentitymanagerを引数として渡す必要があるかもしれません