thinkphp多表查询_PHP教程

php中文网
发布: 2016-07-13 10:22:08
原创
1237人浏览过

蓝心千询
蓝心千询

蓝心千询是vivo推出的一个多功能AI智能助手

蓝心千询 34
查看详情 蓝心千询

thinkphp多表查询

在学习thinkphp 的过程中,需要对多表进行操作,但是在实际过程中,总是遇到各种问题,所以写下这篇博文,作为自己的学习历程
 
在操作过程中,两表查询都没有问题,但是三表查询就开始出现问题
 
有以下三张表,分表为pl表(uid,content),user表(id,username),lyb表(uid,title)
 
多表查询操作有以下几种方法:
 
㈠视图模型(推荐)
 
定义视图模型,只需要继承Think\Model\ViewModel,然后设置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方法默认查询的是所有字段的值

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/851376.htmlTechArticlethinkphp多表查询 在学习thinkphp 的过程中,需要对多表进行操作,但是在实际过程中,总是遇到各种问题,所以写下这篇博文,作为自己的学习...
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

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

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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