0

これを行う方法がわかりません。

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を引数として渡す必要があるかもしれません

4

1 に答える 1