2011-06-24 12 views
0

Zend_Dbを使って複数のデータベースを更新して挿入する方法はありますか? 例、私はZend_Db_Adapter_Pdo_Mysqlでこれを行うことができますどのようにZend_Db複数のデータベースを使用していますか?

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

答えて

1

私は複数のデータベースは、私はこのようなものを使用している

私のapplication.iniファイルで定義されています:あなたはモデルのコンストラクタにしたいDBを指定あなたのモデルを作成する際に

// 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を拡張し、マルチdb更新機能を持つことができます

/* 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'); 

または2つのモデルを実行しているを呼び出して、私は私のクエリを使用することができますquery()メソッドを使用して、異なるデータベース

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

でポイントすることによって、独自のカスタムクエリを記述します。あなた自身の方法をロールすることは、今行く方法と思われる – Moak

関連する問題