2016-04-08 2 views
-1

Wie kann ich mehrere Datenbanken in Zend Framework 2 mit Doktrin 2 konfigurieren (und verwenden)? Derzeit habe ich dies in meiner lokalen.php:Konfigurieren Sie mehrere Datenbanken in zf2 mit 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' 
       ) 
      ) 
     ) 
    ) 
), 

);

Aber ich sehe keine Möglichkeit, eine zweite hinzuzufügen.

+0

Ich lese alle Ihre Beiträge, Sie suchen nichts, und kopieren Sie den Code kopieren, den wir für Sie bereitstellen, müssen Sie besser Ihr Gehirn verbinden und denken, sonst werden Sie jede einzelne Fehlermeldung auf Stackoverflow ohne zu lernen etwas ... – Hooli

Antwort

0

Vielleicht zeigt Ihnen dieses Beispiel den Weg, so habe ich zwei Datenbanken in meiner Anwendung konfiguriert, aber ich verwende Doctrine nicht.

DBs Konfiguration

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') 
       ) 
      ) 
     ) 
    ), 
); 

Dann brauchen Sie einen DbAdapterFactory zu erstellen, die eine Verbindung connection1 und eine weitere Fabrik DB zu DB connection2 verbinden:

PS: Natürlich sind die Namen sind nur Beispiele und Sie können verwende bessere.

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

Jetzt nur noch die spezifischen Adapterfactory verwenden, wenn Sie auf bestimmte DB verbinden möchten.

+0

ich brauche Lehre, wie kann ich das auf Doktrin tun und wie kann ich zwei Entität für zwei Daten 1 und Daten 2 in demselben Modul erstellen Danke im Voraus –