2015-03-03 7 views
0

Я новичок в Zend Framework 2. Я работаю в Zend Framework 2 Project. Я хочу использовать доктрину 2 для этого проекта.Динамическое подключение нескольких баз данных в zend 2 doctrine 2

Я хочу соединить несколько динамических баз данных для моего проекта, я уже подключен к нескольким базам данных в моем проекте, Но я изо всех сил, чтобы соединить его динамически, Пожалуйста, найти свой файл local.php ниже, путь местного .php файл

/var/www/xxxx/yyyy/config/autoload/local.php

local.php

return array(
'db' => array(
    'driver'   => 'Pdo', 
    'dsn'   => 'mysql:dbname=default_db_name;host=localhost', 
    'username'  => 'default_user', 
    'password'  => 'default_password', 
    'driver_options' => array(
     PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' 
    ), 
), 
'doctrine' => array(
    'connection' => array(
     'orm_default' => array(
      'driverClass' => 'Doctrine\\DBAL\\Driver\\PDOMySql\\Driver', 
      'params' => array(
       'host' => 'localhost', 
       'port' => '3306', 
       'user' => 'default_user', 
       'password' => 'default_password', 
       'dbname' => 'default_db_name', 
      ), 
     ), 
     'client_1' => array(
      'driverClass' => 'Doctrine\\DBAL\\Driver\\PDOMySql\\Driver', 
      'params' => array(
       'host' => 'localhost', 
       'port' => '3306', 
       'user' => 'user_1', 
       'password' => 'password_1', 
       'dbname' => 'client_1', 
      ), 
     ), 
    ), 
), 
'doctrine' => array(
    'connection' => array(
     // Default DB connection 
     'orm_default' => array(
      'driverClass' => 'Doctrine\\DBAL\\Driver\\PDOMySql\\Driver', 
      'params' => array(
       'host' => 'localhost', 
       'port' => '3306', 
       'user' => 'devuser', 
       'password' => 'default_password', 
       'dbname' => 'default_db_name', 
       'driver' => 'pdo_mysql', 
      ), 
     ), 

     'client_1' => array(
      'driverClass' => 'Doctrine\\DBAL\\Driver\\PDOMySql\\Driver', 
      'params' => array(
       'host' => 'localhost', 
       'port' => '3306', 
       'user' => 'user_1', 
       'password' => 'password_1', 
       'dbname' => 'client_1', 
       'driver' => 'pdo_mysql', 
      ), 
     ), 
    ), 

    // Entity Manager instantiation settings 
    'entitymanager' => array(
     'orm_default' => array(
      'connection' => 'orm_default', 
      'configuration' => 'orm_default', 
     ), 
     'oliversweeney' => array(
      'connection' => 'client_1', 
      'configuration' => 'client_1', 
     ), 
    ), 

    // Use array cache locally, also auto generate proxies on development environment. 
    'configuration' => array(
     'orm_default' => array(
      'metadata_cache' => 'array', 
      'query_cache' => 'array', 
      'result_cache' => 'array', 
      'hydration_cache' => 'array', 
      'generate_proxies' => true, 
     ), 
     'client_1' => array(
      'metadata_cache' => 'array', 
      'query_cache' => 'array', 
      'result_cache' => 'array', 
      'hydration_cache' => 'array', 
      'generate_proxies' => true, 
     ), 
    ), 
), 
'zf-oauth2' => array(
    'storage' => 'ZF\\OAuth2\\Adapter\\PdoAdapter', 
    'db' => array(
     'dsn_type' => 'PDO', 
     'dsn' => 'mysql:host=localhost;dbname=default_db_name', 
     'username' => 'default_user', 
     'password' => 'default_password', 
    ), 
), 
); 

Теперь я подключаю к базе данных client_1 б у следующая кодировка,

пожалуйста найти ниже файл

Имя

файла: NotificationLogFactory.php Путь файла: /var/www/xxxx/yyyyy/module/Application/src/Application/Factory/NotificationLogFactory.php

<?php 

namespace Application\Factory; 

use Zend\ServiceManager\FactoryInterface; 
use Zend\ServiceManager\ServiceLocatorInterface; 
use Application\Service\NotificationLogService; 

class NotificationLogFactory implements FactoryInterface 
{ 
    public function createService(ServiceLocatorInterface $serviceLocator) 
{   
    $em = $serviceLocator->get('doctrine.entitymanager.client_1'); 

    return new NotificationLogService($em); 
} 

}

Мой вопрос заключается в том, что, как соединить динамические несколько баз данных?

Пример: client_1, client_2, client_3, client_4 ......

пожалуйста, дайте мне знать, если вы имеете любой вопрос для моей проблемы ....

ответ

-1

Попробовать и посмотреть на zend2 библиотека доктрины я писал:

https://github.com/rradutzu/zend2-doctrine-dynamic-db

https://packagist.org/packages/rradutzu/zend2-doctrine-dynamic-db

В настоящее время он поддерживает только динамическую БД имена, только если базы данных, которые вы пытаетесь переключить, находятся на одном сервере.

На этой неделе добавится возможность переключения между db на нескольких серверах.

Надеюсь, это поможет.

Смежные вопросы