Yii1.1 多库配置及运用 [ 未指定版本 ]
目前用yii在做一个cms 按需求需要操作多个库 下面简单说下yii多库配置。
首先 找到protected > config > main.php配置文件,打开文件找到components组件配置,yii默认配置db 如果我们要加库可直接复制db配置项,但是有一点必须注意的是 新加的库配置必须要加'class' => 'CDbConnection'
,要不然会报错列子如下:
'db2'=>array(
'class' => 'CDbConnection',
'connectionString' => 'mysql:host=127.0.0.1;dbname=dataname',
'emulatePrepare' => true,
'username' => 'root',
'password' => '123456',
'charset' => 'utf8',
'enableParamLogging' => true
)
库配置好后该如何使用呢?现在我们建立一个user model来调用刚刚建立的数据库,请看下面:
class User extends CActiveRecord {
public function getDbConnection() {
return Yii::app()->db2;
}
}
这样我们在user model下面就可以操作db2数据了,另外如果我们有很多model要使用到db2库为了避免每个模型都要getDbConnection或者说针对db2写一些公用方法的话可以在protected > components文件夹下定义一个CActiveRecord 的子类。yii 的 model默认都是继承CActiveRecord类,我们可以这样改写在components文件下建立一个ContentActiveRecord.php子类该子类直接继承CActiveRecord代码如下:
class ContentActiveRecord extends CActiveRecord {
public function getDbConnection() {
return Yii::app()->db2;
}
}
此时你可在该类下写一些公共方法,现在需要继承db2数据库的modle 可直接继承ContentActiveRecord,还是以user为列:
class User extends ContentActiveRecord{
public static function model($className = __CLASS__){
return parent::model($className);
}
public function tableName(){
return "user";
}
}
candy110
注册时间:2014-07-18
最后登录:2024-03-08
在线时长:128小时26分
最后登录:2024-03-08
在线时长:128小时26分
- 粉丝28
- 金钱3585
- 威望50
- 积分5365
共 4 条评论
你这是 1 的吧?对吧??
嗯 2还没时间看 等项目完 2也正式发布了 在研究
有明显的protected就是Yii1的标志、、、呵呵
这个是yii1.0的多库配置,2.0的和这个不同
2.0的除了白狼的那个文章。。。还有别的文献可以参考的吗?
这样能把所有的读写操作分离吗? 写主库 读从库?
这个估计是不出力读写分离的吧。。。