2010-05-30 80 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