在thinkphp框架中如何对多表进行操作(thinkphp多表查询方法)
在thinkphp框架中如何对多表进行操作(thinkphp多表查询方法)
本文讲解了在thinkphp框架中如何对多表进行操作,ThinkPHP是一个开源的PHP框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。感兴趣的同学参考下吧.
在操作过程中,两表查询都没有问题,但是三表查询就开始出现问题
有以下三张表,分表为pl表(uid,content),user表(id,username),lyb表(uid,title)
多表查询操作有以下几种方法:
㈠视图模型(推荐)
定义视图模型,只需要继承ThinkModelViewModel,然后设置viewFields属性即可
public $viewFields = array(
'pl' =>array('uid','rid','content'),
'user' =>array('id','username','_on'=>'pl.uid=user.id'),
'lyb' =>array('uid'=>'lid','content'=>'lyb_content','title','_on'=>'pl.uid=lyb.uid'), //如果表中有字段重名,可以通过=>设置别名,'uid'=>'lid'
);
视图查询:
视图查询和不同模型的查询一样,没有什么区别。
$Model = D("pl") ->field('uid,title,username,lyb_content')->select(); //pl为数据库名
如果发现查询的结果存在重复数据,还可以使用group方法来处理。
㈡join
JOIN方法也是连贯操作方法之一,用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
join通常有下面几种类型,不同类型的join操作会影响返回的数据结果。
INNER JOIN : 如果表中有至少一个匹配,则返回行,等同于 JOIN
LEFT JOIN : 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN : 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN : 只要其中一个表中存在匹配,就返回行
join方法可以支持以上四种类型:
同样是对以上三张表进行操作
$Model = D("pl")
->join('lyb on pl.uid = lyb.uid')
->join('user on pl.uid = user.id')
->field('user.username,lyb.title,pl.content')
->select();
㈢table
table方法也属于模型类的连贯操作方法之一,主要用于指定操作的数据表。
用法
一般情况下,操作模型的时候系统能够自动识别当前对应的数据表,所以,使用table方法的情况通常是为了:
切换操作的数据表;
对多表进行操作;
$Model = D("pl")
->field('pl.content,user.username,lyb.title')
->table('pl,lyb,user')
->limit(10)
->select();
注:table方法默认查询的是所有字段的值
在thinkphp框架中如何对多表进行操作(thinkphp多表查询方法)相关推荐
- php 打印oracle数组,ThinkPHP框架自身$map数组查询语言where条件对应oracle数据库时间戳查询方法...
oracle数据库时间戳 查询 sql: to_char(date,'yyyy-mm-dd') >= '2013-02-20' and to_char(date,'yyyy-mm-dd') &l ...
- php读取excel中数据库,ThinkPHP 框架实现的读取excel导入数据库操作示例
本文实例讲述了ThinkPHP 框架实现的读取excel导入数据库操作.分享给大家供大家参考,具体如下: 入口文件中: require_once VENDOR_PATH.'PHPExcel/PHPEx ...
- php框架m方法详细,Thinkphp框架中D方法与M方法的区别是什么
Thinkphp框架中D方法与M方法的区别是什么 发布时间:2021-02-06 23:09:38 来源:亿速云 阅读:69 作者:小新 小编给大家分享一下Thinkphp框架中D方法与M方法的区别是 ...
- ping php支付,thinkphp框架中引出ping++支付server SDK
thinkphp框架中引入ping++支付server SDK ping++支付平台整合了支付宝,微信支付,百度钱包,银联支付等主流支付方式.而且其开发文档,也很容易理解和上手,所以想写篇博客,记录下 ...
- php视图,thinkPHP框架中视图的讲解(附代码)
这篇文章给大家介绍的内容是关于thinkPHP框架中视图的讲解(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. thinkPHP中有一个方法和display()相似,fetc ...
- ThinkPHP框架中解决无法加载控制器的问题—原因之一
相信许多PHP开发者在使用ThinkPHP框架进行快速开发的时候遇到过通过URL访问控制器方法时遇到图上的这种问题. 为什么会无法加载控制器呢,原因有很多,但是据我所了解的来看,最有可能的还是: 你的 ...
- php volist中作判断,ThinkPHP模板中判断volist循环的最后一条记录的验证方法
ThinkPHP模板中判断volist循环的最后一条记录的验证方法 对于用过smarty做过php开发的朋友来说,应该都知道在smarty模板里面判断foreach循环是否是最后一个可以用$smart ...
- Thinkphp框架中D()和M()的区别
ThinkPHP中实例化对象M()和D()的区别?ThinkPHP如何实例化对象? 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D ...
- php ci框架中载入css和js文件失败的原因及解决方法
在将html页面整合到ci框架里面的时候,载入css和js失败.原因是ci框架是入口的框架 对框架中文件的全部请求都须要经过index.php处理完毕,当载入外部的css和js文件的时候要使 用bas ...
最新文章
- 新手学习python的方法
- linux 下 用户与用户组
- 前端Yslow的23个优化原则
- angular 自定义指令参数详解
- redis终端简单命令
- java steam 去重_Java中对List去重 Stream去重的解决方法
- 智能灯控制页面用HTML编写,智能家居系统中智能化灯光控制的设计实现
- 项目lib上传maven仓库配置
- opencv python 鼠标响应操作
- SpringMVC框架学习上篇
- 2020 的最后 1 天,写个年终总结吧!
- Spring获取外网IP
- 基于Gensim创建词向量
- WSL2 Ubuntu中apt update命令报错,无法解析域名解决方法
- 笔记本外接二个显示器
- 换了爸爸,推特用户坐不住了……
- 从Bugreport 解读 Android电量统计原理
- 汽车零部件-线控底盘
- python全套教程百度云-老男孩python全套视频教程百度云资源下载
- Fine-Grained Representation Learning and Recognition by Exploiting Hierarchical Semantic Embedding
热门文章
- sql server 2000安装程序配置服务器失败
- python win32print txt_Python Win32Print打印机状态混乱
- 第三方登录用户信息表设计
- 将多个单词利用字符串拼接,输出成一句话
- Android 11来了,快!扶我起来
- 音视频技术开发周刊 | 229
- 中国矿业大学教务系统服务器,中国矿业大学教务系统入口:http://jwb.cumt.edu.cn/...
- VBE_INFO(获取VBE信息)
- 用Kali实现局域网内ARP欺骗和中间人攻击
- ONLYOFFICE部署与集成