Yii连接多个数据库方法.doc

Yii连接多个数据库方法.doc

ID:51696041

大小:42.95 KB

页数:2页

时间:2020-03-15

Yii连接多个数据库方法.doc_第1页
Yii连接多个数据库方法.doc_第2页
资源描述:

《Yii连接多个数据库方法.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Yii连接多个数据库的方法2012-11-26@AUTHORBYCharlieChen一、配置多数据库大多数情况下,我们都会采用同一类型的数据库,只是为了缓解压力分成主从或分布式形式而已。声明你可以在主配置文件(main.php)中里声明其它的数据库连接:array(        'db'=>....// 主链接        'db1'=>...// 从连接1        'db2'=>...// 从连接2    )    ......操作在代码里,可以通过Yii::app()-

2、>db1和Yii::app()->db2获得两个从连接。'db1'=>array(      'class'      =>'CDbConnection',      'connectionString'=>'mysql:host=localhost;dbname=test;charset=…',      'emulatePrepare'=>true,      'username'=>'test',      'password'=>'test',      'charset'=>'utf8',    ),第二个以后的db1数组中一定要写上cla

3、ss参数,让Yii知道你在定义一个数据库连接对象,不然会报错。一旦我们这样定义以后,就可以通过Yii::app()->db1来指向第二个数据库了。二、重载GetDbConnection()方法因为每个Model都是(直接或者间接地)继承自基类CActiveRecord的,因此,都包含GetDbConnection()这个方法,GetDbConnection()返回一个数据库连接对象的句柄。我们需要在模型(model)里面通过重载这个方法来返回我们需要的数据库对象。然后,假设我们新建了一文件:protected/components/Sub1Activ

4、eRecord.php,然后在你的所有要用db1这个数据库的model里extendSub1ActiveRecord而不是CActiveRecord。这里我们是通过扩展Yii通用类来定义一个新的类,而不是在每个模型里面都重载getDbConnection方法,这样做的好处是更大程度上的代码重用,节省时间。重载代码如下://protected/components/MyActiveRecord.php classSub1ActiveRecordextendsCActiveRecord{  publicfunctiongetDbConnection() 

5、 {    if(self::$db!==null)      returnself::$db;    else    {            //这里就是我们要修改的      self::$db=Yii::app()->getComponent('db1');            //self::$db=Yii::app()->db1;      if(self::$dbinstanceofCDbConnection)        returnself::$db;      else        thrownewCDbException(

6、Yii::t('yii','ActiveRecordrequiresa"db1"CDbConnectionapplicationcomponent.'));    }  }...........}三,在模型中使用经过以上两步以后,我们就可以这样来用:12345//protected/models/Ad.php classAdextendsSub1ActiveRecord{  ...}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。