您的位置:首页 > 编程语言 > PHP开发

Yii 读写分离 分表分库

2015-08-05 13:47 671 查看
本文转自 http://hudeyong926.iteye.com/blog/1299989
实现一主一从,一主多从,多主多从的读写分离 。支持DAO,AR,其中Query builder只完成部分,需完善

调用

Java代码


//AR

class User extends ActiveRecord

{

public $useDbName= 'passport';

//$this->dbWrite();

}

//$connection = $model->getDbConnection();

//DAO

$connection = Yii::app()->db->setDbName('passport');

$count = $connection->createCommand('SELECT COUNT(*) FROM film')->queryScalar();

$sql = 'SELECT film_id,title FROM film';

$dataProvider=new CSqlDataProvider($sql,array(

'db'=> $connection,

'totalItemCount'=>$count,

));

Yii::app()->db->getLastInsertID();

//Query Builder

$user = Yii::app()->db->setDbName('passport')->createCommand()

->select('id, username, profile')

->from('tbl_user u')

->join('tbl_profile p', 'u.id=p.user_id')

->where('id=:id', array(':id'=>$id))

->queryRow();

查看当前使用的主从库配置

Java代码


Yii::app()->db->setDbName('passport');

//print_r(Yii::app()->getComponent('passport'));

分表AR

Java代码


public function primaryKey()

{

return 'id';

}

private $tableName = "servicesmsremindrecord";

public function updateMeta($code)

{

$this->tableName = "service_sms_remind_record_".str_pad(($code%100), 2, '0', STR_PAD_LEFT);

$this->refreshMetaData();

return $this;

}

//TestUserDayHealth::model($code)->with('user')->findAll(); 循环放数组
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: