今天碰到一个连接多个数据库的问题,那么在Yii中如何实现呢?刚开始也是瞎摸索,后来发现竟然还可以。以下是配置:
在config/main.php里做配置,比如需要连接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,这个函数为:
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.
转载于:https://blog.51cto.com/php2013/1369417