Yii鏈接多個數據庫

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

相關文章
相關標籤/搜索