1

symfony 2.0 で複数のデータベースの概念を実装しています。ここで、依存性注入の概念で myservice.php ファイルに動的にエンティティマネージャーを取得する必要があります。このエンティティマネージャーを呼び出すにはどうすればよいですか?

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;
}
4

1 に答える 1

0

サービスをセットアップして doctrine を注入します。

サービス定義 (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>')......
   }
}
于 2013-03-05T10:18:37.853 に答える