Wadslog

[Zend Framework][MySQL] MySQLでレプリケーションをしている場合のZend_Db_Table

Dec 19, 2007

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);
}

}

comments powered by Disqus