2010-05-30 107 views
6

我目前只使用Zend Framework中的一個數據庫,但現在我必須添加一個。Zend Framework多個數據庫

我使用這個代碼現在:

public static function setupDatabase() 
{ 
    $config = self::$registry->configuration; 
    $db = Zend_Db::factory($config->db->adapter, $config->db->toArray()); 
    $db->query("SET NAMES 'utf8'"); 
    self::$registry->database = $db; 
    Zend_Db_Table::setDefaultAdapter($db); 
} 

什麼代碼,我需要爲了使用ONE MORE數據庫編寫;以及我將如何參考它,當我需要進行一些查詢時。

+1

看看這篇文章的一些想法:HTTP://www.amazium .com/blog/zendapplication-multiple-databases – nuqqsa 2010-05-30 15:28:38

+0

如果其中一個答案幫助你Uffo,你應該將它標記爲已接受... – Sonny 2010-06-14 16:10:30

回答

2

在我的情況下,我有一個加載客戶信息的'核心'數據庫,包括客戶的數據庫連接信息。核心連接設置位於application.ini。下面的所有代碼都在我的引導程序中。

載入「核心」連接(未設置在ini默認):

$db_core = $this->getPluginResource('db')->getDbAdapter(); 
$db_core->setFetchMode(Zend_Db::FETCH_OBJ); 
Zend_Registry::set('db_core', $db_core); 

後設置從「芯」數據庫導入註冊表加載:

$settings = Zend_Registry::get('settings'); 
$db = Zend_Db::factory(
    $settings->db_adapter, 
    array(
     'host' => $settings->db_host, 
     'username' => $settings->db_user, 
     'password' => $settings->db_pass, 
     'dbname' => $settings->db_name, 
    ) 
); 
$db->setFetchMode(Zend_Db::FETCH_OBJ); 
Zend_Db_Table::setDefaultAdapter($db); 
7

地方像你application.ini

[production] 

    resources.multidb.db1.adapter = "pdo_mysql" 

    resources.multidb.db1.host = "localhost" 

    resources.multidb.db1.username = "webuser" 

    resources.multidb.db1.password = "XXXX" 

    resources.multidb.db1.dbname = "db1" 



    resources.multidb.db2.adapter = "pdo_pgsql" 

    resources.multidb.db2.host = "example.com" 

    resources.multidb.db2.username = "dba" 

    resources.multidb.db2.password = "notthatpublic" 

    resources.multidb.db2.dbname = "db2" 

    resources.multidb.db2.default = true 
0

我覺得它會幫你

在引導文件applocation.ini文件

resources.multidb.db1.adapter = "pdo_mysql" 
resources.multidb.db1.host = "localhost" 
resources.multidb.db1.username = "root" 
resources.multidb.db1.password = "" 
resources.multidb.db1.dbname = "db1" 
resources.multidb.db1.charset = "utf8" 
resources.multidb.db1.driver_options.1002 = "SET NAMES utf8" 
resources.multidb.db1.default = true 

resources.multidb.db2.adapter = "pdo_mysql" 
resources.multidb.db2.host = "localhost" 
resources.multidb.db2.username = "root" 
resources.multidb.db2.password = "" 
resources.multidb.db2.dbname = "db2" 
resources.multidb.db2.charset = "utf8" 
resources.multidb.db2.driver_options.1002 = "SET NAMES utf8" 
resources.multidb.db2.default = false 

protected function _initDbAdaptersToRegistry() 
{ 
    $this->bootstrap('multidb'); 
    $resource = $this->getPluginResource('multidb'); 

    $Adapter1 = $resource->getDb('db1'); 
    $Adapter2 = $resource->getDb('db2');  
    Zend_Registry::set('db1', $Adapter1); 
    Zend_Registry::set('db2',$Adapter2); 
} 

更多的描述上http://www.tricksofit.com/2013/10/multiple-database-zend-framework