2013-03-05 151 views
1

我在symfony 2.0中实现了多个db概念。现在我需要在依赖注入的概念中在myservice.php文件中动态获取实体管理器。我怎样才能打电话给这个实体经理?依赖注入动态db

的services.xml:

 <container xmlns="http://symfony.com/schema/dic/services" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://symfony.com/schema/dic/services         http://symfony.com  /schema/dic/services/services-1.0.xsd"> 

<services> 
    <service id="my_service" class="Traxcrm\SalesBundle\Services\MyService"> 
     <argument type="service" id="doctrine" /> 
    </service> 
</services> 

</container> 

mysevice.php

class MyService { 

private $doctrine; 

public function __construct(Doctrine\Bundle\DoctrineBundle\Registry $doctrine) 
{ 

    $this->doctrine = $doctrine;    

} 
class MyService { 

private $doctrine; 

public function __construct(Doctrine\Bundle\DoctrineBundle\Registry $doctrine) { 

    $this->doctrine = $doctrine; 
} 

public function getUserDetails($id) { 

    $query = $this->doctrine->getEntityManager('Test')->createQuery("SELECT  p   FROM  TraxcrmSigninBundle:Tblallusers p where p.id=$id"); 
    $userDetails = $query->getArrayResult(); 

    return $userDetails; 
} 

回答

0

设置服务和注入教义:

服务定义(services.yml或config.yml):

services: 
    service_name: 
     class: <namespace>myservice.php 
     arguments: ['@doctrine'] 

或XML:

<services> 
    <service id="service_name" class="<namespace>myservice.php"> 
     <argument type="service" id="doctrine"/> 
    </service> 
</services> 

然后设置你的类来接受教义传入的对象

public class myservice { 

    private $doctrine; 

    public function __construct(Doctrine\Bundle\DoctrineBundle\Registry $doctrine) { 
     $this->doctrine = $doctrine; 
    } 

    public function aFunction() { 
     $em = $this->doctrine->getEntityManager('<name>')...... 
    } 
} 
+0

我使用services.xml文件不services.yml – Niju 2013-03-05 10:36:48

+0

@ user1650898我已经更新了我的答案 - 但我建议你可以阅读[this](http://symfony.com/doc/current/book/service_container.html)了解更多有关使用服务容器的详细信息 – ManseUK 2013-03-05 10:42:29

+0

抱歉.....谢谢,现在只能看到解决方案。我正在尝试该方法 – Niju 2013-03-05 10:47:54