在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多表查询方法)相关推荐

  1. 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 ...

  2. php读取excel中数据库,ThinkPHP 框架实现的读取excel导入数据库操作示例

    本文实例讲述了ThinkPHP 框架实现的读取excel导入数据库操作.分享给大家供大家参考,具体如下: 入口文件中: require_once VENDOR_PATH.'PHPExcel/PHPEx ...

  3. php框架m方法详细,Thinkphp框架中D方法与M方法的区别是什么

    Thinkphp框架中D方法与M方法的区别是什么 发布时间:2021-02-06 23:09:38 来源:亿速云 阅读:69 作者:小新 小编给大家分享一下Thinkphp框架中D方法与M方法的区别是 ...

  4. ping php支付,thinkphp框架中引出ping++支付server SDK

    thinkphp框架中引入ping++支付server SDK ping++支付平台整合了支付宝,微信支付,百度钱包,银联支付等主流支付方式.而且其开发文档,也很容易理解和上手,所以想写篇博客,记录下 ...

  5. php视图,thinkPHP框架中视图的讲解(附代码)

    这篇文章给大家介绍的内容是关于thinkPHP框架中视图的讲解(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. thinkPHP中有一个方法和display()相似,fetc ...

  6. ThinkPHP框架中解决无法加载控制器的问题—原因之一

    相信许多PHP开发者在使用ThinkPHP框架进行快速开发的时候遇到过通过URL访问控制器方法时遇到图上的这种问题. 为什么会无法加载控制器呢,原因有很多,但是据我所了解的来看,最有可能的还是: 你的 ...

  7. php volist中作判断,ThinkPHP模板中判断volist循环的最后一条记录的验证方法

    ThinkPHP模板中判断volist循环的最后一条记录的验证方法 对于用过smarty做过php开发的朋友来说,应该都知道在smarty模板里面判断foreach循环是否是最后一个可以用$smart ...

  8. Thinkphp框架中D()和M()的区别

    ThinkPHP中实例化对象M()和D()的区别?ThinkPHP如何实例化对象? 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D ...

  9. php ci框架中载入css和js文件失败的原因及解决方法

    在将html页面整合到ci框架里面的时候,载入css和js失败.原因是ci框架是入口的框架 对框架中文件的全部请求都须要经过index.php处理完毕,当载入外部的css和js文件的时候要使 用bas ...

最新文章

  1. 新手学习python的方法
  2. linux 下 用户与用户组
  3. 前端Yslow的23个优化原则
  4. angular 自定义指令参数详解
  5. redis终端简单命令
  6. java steam 去重_Java中对List去重 Stream去重的解决方法
  7. 智能灯控制页面用HTML编写,智能家居系统中智能化灯光控制的设计实现
  8. 项目lib上传maven仓库配置
  9. opencv python 鼠标响应操作
  10. SpringMVC框架学习上篇
  11. 2020 的最后 1 天,写个年终总结吧!
  12. Spring获取外网IP
  13. 基于Gensim创建词向量
  14. WSL2 Ubuntu中apt update命令报错,无法解析域名解决方法
  15. 笔记本外接二个显示器
  16. 换了爸爸,推特用户坐不住了……
  17. 从Bugreport 解读 Android电量统计原理
  18. 汽车零部件-线控底盘
  19. python全套教程百度云-老男孩python全套视频教程百度云资源下载
  20. Fine-Grained Representation Learning and Recognition by Exploiting Hierarchical Semantic Embedding

热门文章

  1. sql server 2000安装程序配置服务器失败
  2. python win32print txt_Python Win32Print打印机状态混乱
  3. 第三方登录用户信息表设计
  4. 将多个单词利用字符串拼接,输出成一句话
  5. Android 11来了,快!扶我起来
  6. 音视频技术开发周刊 | 229
  7. 中国矿业大学教务系统服务器,中国矿业大学教务系统入口:http://jwb.cumt.edu.cn/...
  8. VBE_INFO(获取VBE信息)
  9. 用Kali实现局域网内ARP欺骗和中间人攻击
  10. ONLYOFFICE部署与集成