今天碰到一個鏈接多個數據庫的問題,那麼在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