Zend FrameworkでMySQLのマスター/スレーブ形式のレプリケーションに対応させるには自力のようです。 Zend_Db_Tableでマスター/スレーブを使い分ける方法として、どういうのがいいのかと考えています。まず思い浮かぶところでは、Zend_Db_Table_Abstractを拡張したテーブルクラスでDBを振り分けて、そのクラスをさらに拡張して各テーブルを抽象化する(前エントリーのBarクラスのようなもの)というところでしょうか。``` require_once ‘Zend/Db/Table/Abstract.php’;
class Zend_Db_Table_Wrapper extends Zend_Db_Table_Abstract { public function insert(array $data) { /* ここでDBの設定(master) */
return parent::insert($data);
}
public function update(array $data, $where) {
/\* ここでDBの設定(master) \*/
return parent::update($data, $where);
}
public function delete($where) {
/\* ここでDBの設定(master) \*/
return parent::delete($where);
}
public function find($key) {
/\* ここでDBの設定(slave) \*/
return parent::find($key);
}
public function fetchAll($where = null, $order = null, $count = null, $offset = null) {
/\* ここでDBの設定(slave) \*/
return parent::fetchAll($where, $order, $count, $offset);
}
public function fetchRow($where = null, $order = null) {
/\* ここでDBの設定(slave) \*/
return parent::fetchRow($where, $order);
}
}