2016-04-08 5 views
-1

Doctrine 2でZend Framework 2で複数のデータベースを設定(および使用)するにはどうすればよいですか?現在私は私のlocal.phpにこれを持っています:複数のデータベースをdoctrine2で設定する

return array(
'doctrine' => array(
    'connection' => array(
     // default connection name 
     'orm_default' => array(
      'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver', 
      'params' => array(
       'host'  => 'localhost', 
       'port'  => '3306', 
       'user'  => 'root', 
       'password' => '', 
       'dbname' => 'data1', 
       'charset' => 'utf8', 
       'driverOptions' => array(
         1002=>'SET NAMES utf8' 
       ) 
      ) 
     ) 
    ) 
), 

);

しかし、もう1つ追加する方法はありません。

+0

私はあなたの投稿をすべて読んで、何も検索せず、私たちがあなたのために提供するコードをコピーして貼り付けます。何か... – Hooli

答えて

0

おそらくこの例ではあなたの方法を示しているかもしれませんが、これはアプリケーションで2つのデータベースを設定したものですが、私はDoctrineを使用していません。

のDB構成

return array(
    'doctrine' => array(
     'connection1' => array(
      // default connection name 
      'orm_default' => array(
       'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver', 
       'params' => array(
        'host'  => 'localhost', 
        'port'  => '3306', 
        'user'  => 'root', 
        'password' => '', 
        'dbname' => 'data1', 
        'charset' => 'utf8', 
        'driverOptions' => array(1002 => 'SET NAMES utf8') 
       ) 
      ) 
     ), 

     'connection2' => array(
      // default connection name 
      'orm_default' => array(
       'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver', 
       'params' => array(
        'host'  => 'localhost', 
        'port'  => '3306', 
        'user'  => 'root', 
        'password' => '', 
        'dbname' => 'data2', 
        'charset' => 'utf8', 
        'driverOptions' => array(1002 => 'SET NAMES utf8') 
       ) 
      ) 
     ) 
    ), 
); 

その後、DB connection1に接続DbAdapterFactoryとDB connection2に接続する別のファクトリを作成する必要があります。

PS:もちろん名前は一例であり、あなたがすることができますより良いものを使用してください。あなたが特定のDBに接続したいとき

class Adapter1Factory implements FactoryInterface 
{ 
    /** 
    * Create DbAdapter 
    * 
    * @param ServiceLocatorInterface $serviceLocator 
    * @return DbAdapter 
    */ 
    public function createService(ServiceLocatorInterface $serviceLocator) 
    { 
     $config = $serviceLocator->get('config'); 
     $configDb1 = $config['connection1']; 
     $adapter = new \Zend\Db\Adapter\Adapter($configDb1); 

     return $adapter; 
    } 
} 

class Adapter2Factory implements FactoryInterface 
{ 
    /** 
    * Create DbAdapter 
    * 
    * @param ServiceLocatorInterface $serviceLocator 
    * @return DbAdapter 
    */ 
    public function createService(ServiceLocatorInterface $serviceLocator) 
    { 
     $config = $serviceLocator->get('config'); 
     $configDb2 = $config['connection2']; 
     $adapter = new \Zend\Db\Adapter\Adapter($configDb2); 

     return $adapter; 
    } 
} 

は今だけ、特定のAdapterFactoryを使用しています。

+0

私はdoctrineを使用する必要がありますどのように私doctrineで行うことができますどのように私は2つのデータ1とデータ2の2つのエンティティを生成することができます同じモジュールで –

関連する問題