今天碰到一个链接多个数据库的问题,那么在Yii中如何实现呢?刚开始也是瞎摸索,后来发现居然还能够。如下是配置:php
在config/main.php里作配置,好比须要链接mysql中两个数据库mysql
'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=test', 'emulatePrepare' => true, 'username' => 'root', 'password' => '123456', 'charset' => 'utf8', 'tablePrefix'=>'cp_' ), 'db2'=>array( 'class'=>'CDbConnection', 'connectionString' => 'mysql:host=localhost;dbname=gmipost_dev', 'emulatePrepare' => true, 'username' => 'root', 'password' => '123456', 'charset' => 'utf8', 'tablePrefix'=>'gmi_' ),
注:第二个数据库配置须要加上'class'=>'CDbConnection',那么访问的时候怎么办呢?其实很简单,若是使用gii生成model,会发现,在db2中的model里有一个函数getDbConnection,这个函数为:sql
public function getDbConnection() { return Yii::app()->db2; }
也就是说在model里加上这样一个方法,那么该数据库用Yii::app()->db2就能够访问,固然咱们实例化model时直接调用model()方法就行,它会自动调用getDbConnection方法,这样咱们就能够访问多个数据库。数据库
一样的,若是一个是mysql数据库,另外一个是sqllite或者mssql,这样作也是能够的。要注意的是第二个配置须要加上'class'=>'CDbConnection',不然就会报错:Object configuration must be an array containing a "class" element.app