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方法默认查询的是所有字段的值
您可能感兴趣的文章:
- ThinkPHP多表联合查询的常用方法
- thinkphp实现like模糊查询实例
- ThinkPHP查询语句与关联查询用法实例
- ThinkPHP视图查询详解
- ThinkPHP查询返回简单字段数组的方法
- thinkphp数据查询和遍历数组实例
- ThinkPHP5查询数据及处理结果的方法小结
- ThinkPHP中的常用查询语言汇总
- ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
- Thinkphp使用mongodb数据库实现多条件查询方法
- thinkphp视图模型查询提示ERR: 1146:Table ''db.pr_order_view'' doesn''t exist的解决方法
- thinkPHP5实现的查询数据库并返回json数据实例
- thinkphp中多表查询中防止数据重复的sql语句(必看)
- ThinkPHP中关联查询实例
- thinkPHP实现多字段模糊匹配查询的方法
- ThinkPHP5联合(关联)查询、多条件查询与聚合查询实例详解
- thinkphp多表查询两表有重复相同字段的完美解决方法
- ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
- thinkphp学习笔记之多表查询
- ThinkPHP学习笔记(八)CURD的的相关操作以及表的关联查询等
- ThinkPHP学习笔记(七)深入学习数据库查询
- thinkphp学习笔记之查询语句
- ThinkPHP 学习笔记 8.数据库的查询方式
- 多表查询(学习笔记)
- ThinkPHP学习笔记2
- LINQ学习笔记之四:查询内存对象
- SQL Server学习笔记之 T-SQL研究之[基本查询]
- DELPHI学习笔记--使用通配符进行模糊查询
- 数据库学习笔记(二)---SQL查询语句
- Idoc学习笔记----获取查询Idoc信息
- 关于LINQ(语言集成查询)的一些学习笔记(没实践过的)
- 【个人学习笔记5之--子查询与表表达式】
- oracle9i学习笔记之十六 高级子查询
- Idoc学习笔记----获取查询Idoc信息
- SQL Server 2005 技术内幕 TSQL查询学习笔记chapter4之一子查询Subqueries
- 关于LINQ(语言集成查询)的一些学习笔记
- Castle学习笔记----使用HQL语句实现复杂查询
- 学习笔记二--如何:查询包含一组指定单词的句子 (LINQ)