用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4917|回复: 3
收起左侧

[数据库] ci3怎样动态修改全局的数据库连接?

[复制链接]
发表于 2021-1-3 22:06:11 | 显示全部楼层 |阅读模式
我的终极目标是想在controller,根据参数动态修改全局的数据库连接。
比如现在2个数据配置都在database.php配置完毕,全局的数据库是$active_group = 'db1';我想在controller根据参数修改为调用db2(以后还会有db3、db4……)


我现在尝试了一些方法都不行:
controller获取参数后:

$this->load->database('db2', TRUE);

但是打印的$this->db信息还是原来的db1,我想让全局的$this->db变为db2的,应该如何实现呢?

发表于 2021-1-11 14:25:26 | 显示全部楼层
$db2 = $this->load->database('db2', TRUE);
$sql="SELECT * FROM 。。。。。。";
$query=$db2->query($sql);
发表于 2021-6-1 23:23:16 | 显示全部楼层

你在一个公用的Controller中如下配置
PHP复制代码
 
function __construct(){
        parent::__construct();
        $this->db2 = $this->load->database('db2', TRUE);
}
复制代码


只要其他控制器继承这个控制器,就可以这么使用了:
PHP复制代码
$one =$this->db->where('id',1)->get('user')->row();
复制代码


发表于 2021-6-1 23:25:27 | 显示全部楼层
你在公用的控制器中如下配置:

function __construct(){
        parent::__construct();
        $this->db2 = $this->load->database('db2', TRUE);
}

只要其他控制器继承他,都可以实现你想要的$this->db2

本版积分规则