Thinkphp 6.0链式查询方法

本节课我们来学习链式查询方法中的 where()、field()和 alias()。

一.where

1. 表达式查询,就是 where()方法的基础查询方式;

Db::name('user')->where('id', '>', 70)->select();

2. 关联数组查询,通过键值对来数组键值对匹配的查询方式;

$user = Db::name('user')->where([
    'gender' 
    => '男',
    'price' 
    => 100 
    //'price' 
    => [60,70,80]
])->select();

3. 索引数组查询,通过数组里的数组拼装方式来查询;

$user = Db::name('user')->where([
    ['gender', '=', '男'],
    ['price', '=', '100']
])->select();

4. 将复杂的数组组装后,通过变量传递,将增加可读性;

$map[] = ['gender', '=', '男'];
$map[] = ['price', 'in', [60, 70, 80]];
$user = Db::name('user')->where($map)->select();

5. 字符串形式传递,简单粗暴的查询方式,whereRaw()支持复杂字符串格式;

Db::name('user')->whereRaw('gender="男" AND price IN (60, 70, 80)')->select();

6. 如果 SQL 查询采用了预处理模式,比如 id=:id,也能够支持;

Db::name('user')->whereRaw('id=:id', ['id'=>19])->select();

二.field

1. 使用 field()方法,可以指定要查询的字段;

Db::name('user')->field('id, username, email')->select();
Db::name('user')->field(['id', 'username', 'email'])->select();

2. 使用 field()方法,给指定的字段设置别名;

Db::name('user')->field('id,username as name')->select();
Db::name('user')->field(['id', 'username'=>'name'])->select();

3. 在 fieldRaw()方法里,可以直接给字段设置 MySQL 函数;

Db::name('user')->fieldRaw('id,SUM(price)')->select();

4. 使用 field(true)的布尔参数,可以显式的查询获取所有字段,而不是*;

Db::name('user')->field(true)->select();

5. 使用 withoutField()方法中字段排除,可以屏蔽掉想要不显示的字段;

Db::name('user')->withoutField('details')->select();

6. 使用 field()方法在新增时,验证字段的合法性;

Db::name('user')->field('username, email, details')->insert($data);

三.alias

1. 使用 alias()方法,给数据库起一个别名;

Db::name('user')->alias('a')->select();

一.limit

1. 使用 limit()方法,限制获取输出数据的个数;

Db::name('user')->limit(5)->select();

2. 分页模式,即传递两个参数,比如从第 3 条开始显示 5 条 limit(2,5);

Db::name('user')->limit(2, 5)->select();

3. 实现分页,需要严格计算每页显示的条数,然后从第几条开始;

//第一页
Db::name('user')->limit(0, 5)->select();
//第二页
Db::name('user')->limit(5, 5)->select();

二.page

1. page()分页方法,优化了 limit()方法,无须计算分页条数;

//第一页
Db::name('user')->page(1, 5)->select();
//第二页
Db::name('user')->page(2, 5)->select();

三.order

1. 使用 order()方法,可以指定排序方式,没有指定第二参数,默认 asc;

Db::name('user')->order('id', 'desc')->select();

2. 支持数组的方式,对多个字段进行排序;

Db::name('user')->order(['create_time'=>'desc', 'price'=>'asc'])->select();

3. 使用 orderRaw()方法,支持排序的时候指定 MySQL 函数;

Db::name('user')->orderRaw('FIELD(username,"樱桃小丸子") DESC')->select();

四.group

1. 使用 group()方法,给性别不同的人进行 price 字段的总和统计;

Db::name('user')->fieldRaw('gender, SUM(price)')
->group('gender')->select();

2. 也可以进行多字段分组统计;

Db::name('user')->fieldRaw('gender, SUM(price)')
->group('gender,password')->select();

五.having

1. 使用 group()分组之后,再使用 having()进行筛选;

$result = Db::name('user')
->fieldRaw('gender, SUM(price)')
->group('gender')
->having('SUM(price)>600')
->select()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值