博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
thinkphp切换数据库链接方法汇总
阅读量:6697 次
发布时间:2019-06-25

本文共 1149 字,大约阅读时间需要 3 分钟。

hot3.png

一、在Model类中进行切换【推荐】

1、全局切换

   此Model类中所有的操作都是使用的$connection的配置参数

//在模型里单独设置数据库连接信息 protected $connection = array(    'db_type'  => 'mysql',    'db_user'  => 'root',    'db_pwd'   => '123456',    'db_host'  => 'localhost',    'db_port'  => '3306',    'db_name'  => 'thinkphp', ); protected $connection = 'mysql://root:123456@localhost/thinkphp';

2、局限到某一方法

    可能某些时候我们只是需要某一个方法去执行读取其他的数据库的操作

//config.php在项目配置中添加 'OTHER_DB_CONFIG' => array(    'db_type'  => 'mysql',    'db_user'  => 'root',    'db_pwd'   => '123456',    'db_host'  => 'localhost',    'db_port'  => '3306',    'db_name'  => 'thinkphp',)或'OTHER_DB_CONFIG' => 'mysql://root:123456@localhost/thinkphp'配置项,是为了方便简介的设置而已,你在Model里定义也没事//YourModel.class.phppublic function switchDb(){    //此处的1为初次使用其他数据库链接时的设定的编号,以后在使用此链接时只需要db(1)即可,db(0)是默认的    $this->db(1,"OTHER_DB_CONFIG")->query();    //切换会默认的    $this->db(0);}

二、在M()实例化对象时切换

3、M方法实例化时切换

$model = M('TableName', 'db_','OTHER_DB_CONFIG');

    不过我在使用中M()切换后此后的M()方法使用的数据库链接也都是切换后的,也就是说即便你之后的M()没有传入后两个参数,它也没有去使用项目配置里默认的,这让我有些苦恼,只能写在Model里了,虽然都是某个表的实例模型,但貌似M()切换会对其他的表的数据库链接造成影响,木找到回归默认链接的方法,知道的求告知补脑~

转载于:https://my.oschina.net/sallency/blog/382222

你可能感兴趣的文章
解决eclipse + pydev 编译过程中有中文的问题
查看>>
IE打印空白
查看>>
Servlet执行时要实现的方法
查看>>
Linux+php+memcache+APC加速PHP网站
查看>>
技术分享连载(六十一)
查看>>
Citrix XenServer 池要求
查看>>
RHEL 5服务篇—常用网络配置命令
查看>>
不懂卷积神经网络?别怕,看完这几张萌图你就明白了
查看>>
PostgreSQL Frontend/Backend protocol (通信协议)
查看>>
Struts2教程9:实现自已的拦截器
查看>>
在 ActiveReports 中嵌入 Spread 控件
查看>>
Java网络编程从入门到精通(5):使用InetAddress类的getHostName方法获得域名
查看>>
从全息投影到全息平台,必须克服7个障碍
查看>>
烂泥:通过vsphere给esxi添加本地硬盘
查看>>
RabbitMQ实例教程:发布/订阅者消息队列
查看>>
mysql备份还原(视图、存储过程)
查看>>
JavaScript服务器端开发技术(对象属性的枚举与查询)
查看>>
Mware HA实战攻略之五VMwareHA测试验收
查看>>
烂泥:mysql数据库使用的基本命令
查看>>
Cassandra 的数据存储结构——本质是SortedMap<RowKey, SortedMap<ColumnKey, ColumnValue>>
查看>>