Yii2中配置使用连接多个数据库连接(config Model)

  •   
  • 10402
  • PHP
  • 9
  • super_dodo
  • 2016/08/18

在使用Yii2开发的一些项目中需要调用多个数据库,这个时候我们就需要在model里面和在配置文件里面增加一些方法,使我们的model类能直接便捷的切换不同的数据库。

在你的配置文件下面新建一个远程数据库链接的配置文件。例如 config/remote_db.php

return [
	'class' => 'yii\db\Connection',
	'dsn' => 'mysql:host=localhost;dbname=dodobook_net',
	'username' => '********',
	'password' => '********',
	'charset' => 'utf8',
	'tablePrefix'=>'',
];

在你的配置文件里面,默认是web.php这个文件的

'components' => [
    
    'db' => require(__DIR__ . '/db.php'),
    'remote_db' => require(__DIR__ . '/remote_db.php'),
    
],

这些只需要在model里面重写静态方法

namespace app\models\remote;
use Yii;

class UserList extends ActiveRecord{

    public static function model($className=__CLASS__){
        return new $className();
    }

    //默认单库下面此方法可以不写
    public static function getDb(){
    //    return Yii::$app->db;				//默认为链接db 
        return Yii::$app->remote_db;		//链接远程的数据库
    }

    public static function tableName(){
        return 'tbl_user_list';
    }

    public function rules(){
        return [
           
        ];
    }

}

此时调用UserList这个model就是得到远程数据库里面的相关数据了。

此处仅做抛砖~~各位自行研究
//$where = ;
//$params = ;
$sql = "SELECT * FROM user_list WHERE {$where} ";
$result = Yii::$app->remote_db->createCommand($sql, $params)->queryAll();

时间不会停下来等你,我们现在过的每一天,都是余生中最年轻的一天。