2017-02-23 11:38:48 2903次浏览 2条回答 0 悬赏 20 金钱

请教各位大神 怎么动态去连接数据库呢
小弟现在做数据库分库 每个库里面的表是一样的 需要先访问到控制器 然后再判断具体连接哪个库
怎么在控制器里设置数据库连接呢 设置完在models里面的数据库操作都可以使用呢

最佳答案

  • tisswb 发布于 2017-02-23 21:14 举报

    在controller的beforeAction里面,重新设置db组件呗。

    \Yii::$app->set('db', [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=' . $dbHost . ';dbname=' . $dbName,
        'username' => $dbUser,
        'password' => $dbPassword,
        'charset' => 'utf8',
        'emulatePrepare' => true,
        'tablePrefix' => 'xx_',
    ]);
    

    其中的$dbHost, $dbName, $dbUser, $dbPassword都是可以动态指定的。

    1 条回复
    回复于 2017-02-24 09:53 回复

    好办法 谢谢 ~

    觉得很赞
  • 回答于 2017-02-27 10:27 举报
    
    class MyActiveRecord extends CActiveRecord {
    
        public function getDbConnection()
        {
          	return \Yii::app()->db2;
        }
    }
    
    1 条回复
    回复于 2017-02-27 10:29 回复

    版本是1.1 配置文件中配置db2就数据库连接 另外在model ar 模式中继承这个MyActiveRecord类就可以了

您需要登录后才可以回答。登录 | 立即注册
路人甲
见习主管

路人甲

注册时间:2015-06-24
最后登录:2017-09-26
在线时长:11小时13分
  • 粉丝3
  • 金钱125
  • 威望0
  • 积分235

热门问题