// 链操作方法列表
protected $methods = array('strict','order','alias','having','group','lock','distinct','auto','filter','validate','result','token','index','force','master');在array中加入了最后一个 master 值,使连贯制作时支持 master /**
* 是否从主库读取数据
* @param string $type
* @return \Think\Model
* @auth byron sampson
*/
public function master($type=false){
// 分布式数据库支持
$deploy = C('DB_DEPLOY_TYPE');
// 如果手动指定主库读取,并且开启了分布式数据库支持
if ($type && !empty($deploy)){
// 分布式数据库配置解析
$_config['username'] = explode(',',C('DB_USER'));
$_config['password'] = explode(',',C('DB_PWD'));
$_config['hostname'] = explode(',',C('DB_HOST'));
$_config['hostport'] = explode(',',C('DB_PORT'));
$_config['database'] = explode(',',C('DB_NAME'));
$_config['charset'] = explode(',',C('DB_CHARSET'));
$m = floor(mt_rand(0,C('DB_MASTER_NUM')-1));
$db_master = array(
'DB_TYPE' => C('DB_TYPE'),
'DB_USER' => isset($_config['username'][$m])?$_config['username'][$m]:$_config['username'][0],
'DB_PWD' => isset($_config['password'][$m])?$_config['password'][$m]:$_config['password'][0],
'DB_HOST' => isset($_config['hostname'][$m])?$_config['hostname'][$m]:$_config['hostname'][0],
'DB_PORT' => isset($_config['hostport'][$m])?$_config['hostport'][$m]:$_config['hostport'][0],
'DB_NAME' => isset($_config['database'][$m])?$_config['database'][$m]:$_config['database'][0],
'DB_CHARSET' => isset($_config['charset'][$m])?$_config['charset'][$m]:$_config['charset'][0],
);
$this->db(0, $db_master, true);
}
return $this;
}即可,调用方式为 M()->master(true)->find(); $user = M('Member')->master(true)->find();
dump($user); 附件 Model.class.zip ( 14.13 KB 下载:92 次 )
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。