Zend Framework多个数据库

Uff*_*ffo 6 php mysql zend-framework

我目前只使用Zend Framework的一个数据库,但现在我必须添加ONE MORE.

我现在正在使用此代码:

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);
}
Run Code Online (Sandbox Code Playgroud)

为了使用ONE MORE数据库,我需要编写什么代码; 当我需要提出一些问题时,我将如何引用它...

M A*_*onu 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
Run Code Online (Sandbox Code Playgroud)


Son*_*nny 2

在我的情况下,我有一个加载客户信息的“核心”数据库,包括客户的数据库连接信息。核心连接设置位于application.ini. 下面的所有代码都在我的引导程序中。

加载“核心”连接(未在 中设置为默认值ini):

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

将设置从“核心”数据库加载到注册表后:

$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);
Run Code Online (Sandbox Code Playgroud)