thinkphp 切换数据库
除了在预先定义数据库连接和实例化的时候指定数据库连接外,我们还可以在模型操作过程中动态的切换数据库,支持切换到相同和不同的数据库类型。用法很简单, 只需要调用Model类的db方法,用法:
Model->db("数据库编号","数据库配置");
数据库编号用数字格式,对于已经调用过的数据库连接,是不需要再传入数据库连接信息的,系统会自动记录。对于默认的数据库连接,内部的数据库编号是0,因此为了避免冲突,请不要再次定义数据库编号为0的数据库配置。
数据库配置的定义方式和模型定义connection属性一样,支持数组、字符串以及调用配置参数三种格式。
Db方法调用后返回当前的模型实例,直接可以继续进行模型的其他操作,所以该方法可以在查询的过程中动态切换,例如:
- $this->db(1,"mysql://root:123456@localhost:3306/test")->query("查询SQL");
该方法添加了一个编号为1的数据库连接,并自动切换到当前的数据库连接。
当第二次切换到相同的数据库的时候,就不需要传入数据库连接信息了,可以直接使用:
- $this->db(1)->query("查询SQL");
如果需要切换到默认的数据库连接,只需要调用:
- $this->db(0);
如果我们已经在项目配置中定义了其他的数据库连接信息,例如:
- //数据库配置1
- 'DB_CONFIG1' = array(
- 'db_type' => 'mysql',
- 'db_user' => 'root',
- 'db_pwd' => '1234',
- 'db_host' => 'localhost',
- 'db_port' => '3306',
- 'db_name' => 'thinkphp'
- ),
- //数据库配置2
- 'DB_CONFIG2' => 'mysql://root:1234@localhost:3306/thinkphp';
我们就可以直接在db方法中调用配置进行连接了:
- $this->db(1,"DB_CONFIG1")->query("查询SQL");
- $this->db(2,"DB_CONFIG2")->query("查询SQL");
如果切换数据库之后,数据表和当前不一致的话,可以使用table方法指定要操作的数据表:
- $this->db(1)->table("top_user")->find();
thinkphp 切换数据库的更多相关文章
- Phalcon如何切换数据库《Phalcon入坑指南系列 三》
		本系列目录 一.Phalcon在Windows上安装 <Phalcon入坑指南系列 一> 二.Phalcon入坑必须知道的功能(项目配置.控制器.模型.增.删.改.查) 三.Phalcon ... 
- 切换数据库+ThreadLocal+AbstractRoutingDataSource  一
		最近项目用的数据库要整合成一个,所以把多源数据库切换的写法要清除掉.所以以下记载了多远数据库切换的用法及个人对源码的理解. 框架:Spring+mybatis+vertx,(多源数据库切换的用法不涉及 ... 
- Spring3 整合Hibernate3.5 动态切换SessionFactory (切换数据库方言)
		一.缘由 上一篇文章Spring3.3 整合 Hibernate3.MyBatis3.2 配置多数据源/动态切换数据源 方法介绍到了怎么样在Sping.MyBatis.Hibernate整合的应用中动 ... 
- thinkphp 对数据库的操作
		查看ThinkPHP完全开发手册3.1 首先编辑配置文件 thinkphp这个数据库就不乱改了 昨天新建了一个 confluence(utf8)数据库 所以就用它学习一下吧,因为就只建立了一个数据库, ... 
- thinkphp从数据库里的html代码显示页面不解析
		首先,这个问题不应该出现在这里,因为以前在用ThinkPHP3.1.2的时候,利用富文本编辑器保存文本后,直接从数据库里面取出的数据都能正常显示,改用ThinkPHP3.2.3之后,thinkphp从 ... 
- thinkphp 找数据库某个字段为空的数据,PHP 数据调取 空数据
		$arr['dingwei'] = array('EXP','is null'); 
- 【学亮IT手记】mysql创建/查看/切换数据库
		--创建数据库 create database web_test1 CHARACTER set utf8; --切换数据库 use web_test1; --查看当前使用的数据库 select DAT ... 
- mysql 切换数据库方案
		业务场景 在SAAS模式下,不同的租户需要切换数据库,我们可以使用动态数据源,动态数据源有个问题,就是需要对每一个数据库创建一个连接池,在初始化的时候初始化这些连接池, 如果多台应用服务器的情况,每一 ... 
- thinkphp更新数据库的时候where('')为字符串
		if($user->where('phone='.$phone)->save($dataList)){} if($user->where(array('phone' =>$ph ... 
随机推荐
- 微信小程序开发简易计算器改进版
			微信小程序开发计算器有多种方法,但是大部分代码比较复杂.不容易理解.本案例进行了改进,主要是组件bindtap属性绑定的自定义函数clickBtn(),采用了switch语句,使得代码结构更加清晰,学 ... 
- 支付宝支付接口-app支付沙箱环境
			说明 开发阶段 需要验证自己的app支付加签是否正确,这里使用沙箱环境来进行模拟,使用ali的沙箱测试app和沙箱钱包app进行校验 准备阶段 1.进入沙箱页面 2.找到app支付文档 https:/ ... 
- volatile的使用及其原理
			1. volatile的作用 相比Sychronized(重量级锁,对系统性能影响较大),volatile提供了另一种解决 可见性和有序性 ???问题的方案.对于原子性,需要强调一点,也是大家容易误解 ... 
- django 模型ManyToMany 关联的添加,删除,查询
			models.py文件内容: from django.db import models class person(models.Model): name = CharField(max_length= ... 
- PHP ftp_set_option() 函数
			定义和用法 ftp_set_option() 函数设置 FTP 连接的各种运行时选项. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE. 语法 ftp_set_option(ftp_co ... 
- 返回字符串中最长连续相同字串的长度---正则实现与JavaScript实现
			JavaScript 实现 let str = 'AAABBAACCAAAADDE' function continuousString(str) { let finalObj = {} let te ... 
- NOIp2018集训test-9-17(pm)
			T1记忆(memory) 我大概是只记忆只有七秒的金鱼吧.看了下以前的代码发现真的很简单,但是考场上只打了个暴力,虽然骗了88pt.就是枚举选的是哪个串,然后vis[i]表示选了i这些位能不能猜出它, ... 
- NX二次开发-UFUN求对象的最大边界框UF_MODL_ask_bounding_box
			NX9+VS2012 #include <uf.h> #include <uf_obj.h> #include <uf_modl.h> #include <u ... 
- NX二次开发-UFUN工程图表格注释检索默认单元格首选项UF_TABNOT_ask_default_cell_prefs
			NX9+VS2012 #include <uf.h> #include <uf_tabnot.h> #include <NXOpen/Part.hxx> #incl ... 
- Python 爬虫-抓取小说《盗墓笔记-怒海潜沙》
			最近想看盗墓笔记,看了一下网页代码,竟然不是js防爬虫,那就用简单的代码爬下了一节: """ 爬取盗墓笔记小说-七星鲁王宫 """ from ... 
