Zend_Db使用多个数据库?

时间:2011-06-24 11:44:51

标签: mysql zend-db

有没有办法可以使用Zend_Db进行更新并插入多个(两个)数据库? 例如,

UPDATE database1.tableA AS a1, databse2.tableA as a2 SET a1.content = a2.content WHERE a1.id = a2.id

我如何使用Zend_Db_Adapter_Pdo_Mysql

执行此操作

1 个答案:

答案 0 :(得分:1)

我在application.ini文件中定义了多个数据库

我使用过这样的东西:

// REGISTRY
Zend_Registry::set('configuration', $configuration);
foreach($configuration->database as $type => $database){
    $db[$type] = Zend_Db::factory(
        $database
    );
}
Zend_Registry::set('db', $db);

创建模型后,您可以在模型构造函数中指定所需的数据库

$newModel = Model_NewModel($db['db_key_name']);

您有3个选项,您可以手动编写自己的对象以扩展Zend_Db_Table_Abstract并具有多数据库更新功能

/* the code for this example is pseudo code, so it probably wont work but the concept is still good */
class Model_NewModel extends MoakCustomDbClass{
    function multi_db_update($db1, $db2, $update, $where)
    {
        $originalDb = $this->_db;
        $this->_db = $db1;
        $this->update($update, $where);
        $this->_db = $db2;
        $this->update($update, $where);
        $this->_db = $originalDb;

    }
}

,通过调用

编写自己的自定义查询
$newModel->query('UPDATE QUERY');

或运行两个指向不同数据库的模型

$newModelA = Model_NewModel($db['db_key_name_A']);
$newModelB = Model_NewModel($db['db_key_name_B']);