0

我不知道该怎么做

我在 Symfony2 中创建了一个服务,我需要这个服务使用请求和原则 entitymanager 服务

在 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

3

然后你注入了错误的对象。为什么不向服务注入教义?

services:
    logdb:
       class:     %logdb.class%
       arguments: ['@doctrine','@request_injector']
                   # ^^^^^^^^^^^^^- not the entity_manager

然后你可以在你的service

$em = $this->doctrine->getManager($this->request);
于 2013-08-01T10:14:36.273 回答