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

相关文章
相关标签/搜索