0

0

thinkphp多表查询

php中文网

php中文网

发布时间:2016-06-13 09:28:15

|

1034人浏览过

|

来源于php中文网

原创

thinkphp多表查询

在学习thinkphp 的过程中,需要对多表进行操作,但是在实际过程中,总是遇到各种问题,所以写下这篇博文,作为自己的学习历程

 

立即学习PHP免费学习笔记(深入)”;

在操作过程中,两表查询都没有问题,但是三表查询就开始出现问题

 

立即学习PHP免费学习笔记(深入)”;

有以下三张表,分表为pl表(uid,content),user表(id,username),lyb表(uid,title)

 

立即学习PHP免费学习笔记(深入)”;

多表查询操作有以下几种方法:

 

立即学习PHP免费学习笔记(深入)”;

㈠视图模型(推荐)

 

立即学习PHP免费学习笔记(深入)”;

定义视图模型,只需要继承Think\Model\ViewModel,然后设置viewFields属性即可

 

立即学习PHP免费学习笔记(深入)”;

复制代码

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'

        );     

复制代码

视图查询:

 

立即学习PHP免费学习笔记(深入)”;

视图查询和不同模型的查询一样,没有什么区别。

 

立即学习PHP免费学习笔记(深入)”;

 $Model = D("pl") ->field('uid,title,username,lyb_content')->select();   //pl为数据库名

如果发现查询的结果存在重复数据,还可以使用group方法来处理。

 

立即学习PHP免费学习笔记(深入)”;

㈡join

 

立即学习PHP免费学习笔记(深入)”;

JOIN方法也是连贯操作方法之一,用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

 

立即学习PHP免费学习笔记(深入)”;

join通常有下面几种类型,不同类型的join操作会影响返回的数据结果。

采风问卷
采风问卷

采风问卷是一款全新体验的调查问卷、表单、投票、评测的调研平台,新奇的交互形式,漂亮的作品,让客户眼前一亮,让创作者获得更多的回复。

下载

 

立即学习PHP免费学习笔记(深入)”;

INNER JOIN: 如果表中有至少一个匹配,则返回行,等同于 JOIN

LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行

RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行

FULL JOIN: 只要其中一个表中存在匹配,就返回行

join方法可以支持以上四种类型:

 

立即学习PHP免费学习笔记(深入)”;

同样是对以上三张表进行操作

 

立即学习PHP免费学习笔记(深入)”;

$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();

 

立即学习PHP免费学习笔记(深入)”;

 

立即学习PHP免费学习笔记(深入)”;

㈢table

 

立即学习PHP免费学习笔记(深入)”;

table方法也属于模型类的连贯操作方法之一,主要用于指定操作的数据表。

 

立即学习PHP免费学习笔记(深入)”;

用法

一般情况下,操作模型的时候系统能够自动识别当前对应的数据表,所以,使用table方法的情况通常是为了:

 

立即学习PHP免费学习笔记(深入)”;

切换操作的数据表;

对多表进行操作;                                                                                                                                                                                          

$Model = D("pl")

  ->field('pl.content,user.username,lyb.title')

  ->table('pl,lyb,user')

  ->limit(10)

  ->select();

注:table方法默认查询的是所有字段的值

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

2

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

2

2025.12.24

AppleID格式
AppleID格式

本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

0

2025.12.24

csgo视频观看入口合集
csgo视频观看入口合集

本专题整合了csgo观看入口合集,阅读下面的文章了知道更多入口地址。

29

2025.12.24

yandex外贸入口合集
yandex外贸入口合集

本专题汇总了yandex外贸入口地址,阅读下面的文章了解更多内容。

58

2025.12.24

添加脚注通用方法
添加脚注通用方法

本专题整合了添加脚注方法合集,阅读专题下面的文章了解更多内容。

1

2025.12.24

重启电脑教程汇总
重启电脑教程汇总

本专题整合了重启电脑操作教程,阅读下面的文章了解更多详细教程。

3

2025.12.24

纸张尺寸汇总
纸张尺寸汇总

本专题整合了纸张尺寸相关内容,阅读专题下面的文章了解更多内容。

5

2025.12.24

Java Spring Boot 微服务实战
Java Spring Boot 微服务实战

本专题深入讲解 Java Spring Boot 在微服务架构中的应用,内容涵盖服务注册与发现、REST API开发、配置中心、负载均衡、熔断与限流、日志与监控。通过实际项目案例(如电商订单系统),帮助开发者掌握 从单体应用迁移到高可用微服务系统的完整流程与实战能力。

1

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号