php – 使用Zend Framework连接到两个不同的数据库

我在这里有一个中等大小的内部网站,完全写在Zend FW中. Intranet的数据库位于另一个服务器上.现在我需要使用一些新的功能来扩展内部网.为了做到这一点,我需要连接到同一个服务器上的另一个数据库(和同一个DBMS).

现在的问题是:最好的方法是什么?我应该创建一个新的Zend_Config对象和一个新的Zend_Db_Adapter?或者我应该使用现有的,并尝试使用“使用otherdbname;”在同一会话内连接到新数据库的语句?

还是有更好的方法呢?

最佳答案
一个选项是从bootstrap.php注册2个数据库句柄,每个连接一个.例如.:

$parameters = array(
                    'host'     => 'xx.xxx.xxx.xxx',
                    'username' => 'test',
                    'password' => 'test',
                    'dbname'   => 'test'
                   );
try {
    $db = Zend_Db::factory('Pdo_Mysql', $parameters);
    $db->getConnection();
} catch (Zend_Db_Adapter_Exception $e) {
    echo $e->getMessage();
    die('Could not connect to database.');
} catch (Zend_Exception $e) {
    echo $e->getMessage();
    die('Could not connect to database.');
}
Zend_Registry::set('db', $db);

$parameters = array(
                    'host'     => 'xx.xxx.xxx.xxx',
                    'username' => 'test',
                    'password' => 'test',
                    'dbname'   => 'test'
                   );
try {
    $db = Zend_Db::factory('Pdo_Mysql', $parameters);
    $db->getConnection();
} catch (Zend_Db_Adapter_Exception $e) {
    echo $e->getMessage();
    die('Could not connect to database.');
} catch (Zend_Exception $e) {
    echo $e->getMessage();
    die('Could not connect to database.');
}
Zend_Registry::set('db2', $db);

在您的控制器(例如)中:

public function init()
{
     $this->db = Zend_Registry::get('db');
     $this->db2 = Zend_Registry::get('db2');
}

public function fooAction()
{
    $data = $this->db2->fetchAll('select foo from blah');
    ...
}

转载注明原文:php – 使用Zend Framework连接到两个不同的数据库 - 代码日志