【发布时间】:2013-08-01 09:26:32
【问题描述】:
我不知道该怎么做,
我在 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 作为参数传递
【问题讨论】:
标签: symfony service request entitymanager