07查询表达式 及 page分页、order 排序《ThinkPHP6 入门到电商实战》

2022-09-20 14:57:52 浏览数 (1)

文章目录(更新中…)

01 thinkphp6的前期开发准备《ThinkPHP6 入门到电商实战》 02 控制器《ThinkPHP6 入门到电商实战》 03 数据库查询、模型查询、多库查询《ThinkPHP6 入门到电商实战》 04 tp6 的查数据《ThinkPHP6 入门到电商实战》 05 tp6 的数据添加《ThinkPHP6 入门到电商实战》 06 tp6 的数据更新(改)及删除 《ThinkPHP6 入门到电商实战》 07查询表达式 及 page分页、order 排序《ThinkPHP6 入门到电商实战》 08 获取器 withAttr、多连缀、whereRaw、事务、数据集《ThinkPHP6 入门到电商实战》

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我,若你是真心学习可以送你书籍,指导你学习,给予你目标方向的学习路线,无套路,博客为证。

一、查询表达式

查询表达式是指在查询中使用表达式,进行更灵活的查询,以下是官方手册中的表达式:

在此列出较为常用的查询表达式,其他表达式自行查看手册即可。

1.1= 表达式

以下是官方手册示例,使用等于表达式对某个值进行查询:

代码语言:javascript复制
Db::name('user')->where('id','=',100)->select();

若查询 student 表中身高等于 170 的同学那么代码写成:

代码语言:javascript复制
public function select(){
   $res=Db::name('student')->where('height','=',170)->select();
   dump($res);
}

结果如下:

以上查询方法与以下代码等效:

代码语言:javascript复制
Db::name('user')->where('id',100)->select();

1.2 不等于 <>

若想查询不包括 170 身高的同学就可以写成如下代码:

代码语言:javascript复制
$res=Db::name('student')->where('height','<>',170)->select();

结果为:

1.3 区间查询 between 、whereIn、whereNotIn

between 表示某个值在什么和什么之间,例如:

代码语言:javascript复制
$res=Db::name('student')->where('id','between','1,5')->select();

以上代码表示 id 在 1至5 之间,那么得到的数据如下:

也可以使用 whereBetween 进行查询,两者等效:

代码语言:javascript复制
$res=Db::name('student')->whereBetween('id','1,5')->select();

同样也可以使用 not between 表示非区间内查询:

代码语言:javascript复制
$res=Db::name('student')->whereNotBetween('id','1,5')->select();

结果如下:

使用 in 进行查询则是表示某个值在指定的范围之中,这个范围是给定的,而不是自动的一个区间:

代码语言:javascript复制
$res=Db::name('student')->where('id','in','1,5,8')->select();

以上代码表示 id 为 1、5、8 均满足查询条件,那么此时的数据为:

当然也可以使用 notin 和 wherein:

代码语言:javascript复制
Db::name('student')->whereIn('id','in','1,5,8')->select();
Db::name('student')->whereNotIn('id','in','1,5,8')->select();

二、page 分页查询

在以往的分页中我们可能使用较多的是 limit 操作,当然在这里也可以使用 limit 操作,但是使用 page 更加的“舒服”,例如如下示例:

代码语言:javascript复制
public function select(){
    $res=Db::name('student')->page(1, 3)->select();
    dump($res);
}

使用 page 就表示每页 3 调数据,1则表示第一页,此时只需要更改1这个数字就可以表示不同“页”的数据了,结果如下:

三、order 排序

使用 order 可使数据通过某个值按照不同的方式进行排列,例如:

代码语言:javascript复制
Db::name('student')->page(1, 3)->order('id', 'desc')->select();

以上代码表示查询所有数据的前3个,但是排序是id desc 降序排序,那么结果就是:

0 人点赞