该文是wecenter学习笔记的一部分
Model读写分离
所有的具体的Model都从AWS_MODEL派生。
AWS_MODEL依赖core_db对Zend_Db的包装来支持数据库相关的功能,参照:
system/core/db.php
初始化
$this->db['master'] = Zend_Db::factory(load_class('core_config')->get('database')->driver, load_class('core_config')->get('database')->master);
切换数据库
public function setObject($db_object_name = 'master')
{
if (isset($this->db[$db_object_name]))
{
Zend_Registry::set('dbAdapter', $this->db[$db_object_name]);
Zend_Db_Table_Abstract::setDefaultAdapter($this->db[$db_object_name]);
$this->current_db_object = $db_object_name;
return $this->db[$db_object_name];
}
throw new Zend_Exception('Can\'t find this db object: ' . $db_object_name);
}
AWS_MODEL提供如下功能
- 自动添加表前缀
- 数据库主从切换
- 基本CRUD
- 事务处理
- 脚本执行完后的数据库更新操作
- 分页查询
- 基本的统计 count\max\min\sum
- quote
通过对db操作的封装,方便将所有的查询操作切换到从库,更新使用主库,从而实现读写分离对具体Model的实现者透明。