Thinkphp6数据库的链式查询

查询规则

  • 通过指向符号“->”多次连续调用方法称为:链式查询
  • 当执行Db::name(‘user’)时,返回的是查询对象
  • 主要是数据库对象,那么就可以一直使用指向符号进行链式查询
  • find()、select()等方法会返回数组(Array)或数据集对象(Colletion)
  • 而find()和select()是结果查询方法(放在最后),不是链式查询方法

更多查询

  • 如果多次使用数据库查询,那么每次静态创建都会生成一个实例,造成浪费
  • 可以将对象实例保存下来,然后进行反复调用
//将对象实例保存下来
$data = Db::name ('user');
$userData = $data->where('id',1)->find();;
return json($userData);
  • 当同一对象实例第二次查询后,会保留第一次查询的值
  • 可以使用removerOption()方法,清理掉上一次查询保留的值

where

  • 表达式查询,就是where()方法的基础查询方式
Db::name('user')->where('id','>',9)->select();
  • 关联数组查询,可以使用数组键值对来匹配查询
$data = [
    'id'            => 8,
    'username'      => 'zhh'
];
Db::name('user')->where($data)->find();
  • 索引数组查询,可以通过数组里使用数组拼装方式查询
Db::name('user')->where([
    ['id','=',8],
    ['username','=','zhh']
])->select();
  • 可以将数组组装后,通过变量传递,增加可读性
$map[] = ['id','=',8];
$map[] = ['username','=','zhh'];
Db::name('user')->where($map)->select();
  • 字符串形式传递,使用whereRaw()支持复杂字符串格式
Db::name('user')->whereRaw('id=8 and username="zhh"')->select();

field

  • 使用field()方法,可以指定要查询的字段,可以传入数组
Db::name('user')->field('id,username,pass')->select();
Db::name('user')->field(['id','username','pass'])->select();
  • field()方法,可以个给指定的字段设置别名
Db::name('user')->field('id,username as user')->select();
  • 使用field(true)的参数,可以显示所有字段,不是*
Db::name('user')->field(true)->select();
  • 使用field()方法新增时,会验证字段的合法性
Db::name('user')->field('username,email')->inset($data);
  • 在fieldRaw()方法里,可以直接给字段设置mysql函数
Db::name('user')->fieldRaw('id,sum(price)')->select();
  • 使用withoutField()方法中可以将字段排除,可以屏蔽不想要的字段
Db::name('user')->withoutField('pass')->select();

ailas

  • 使用ailas()可以给数据库其别名
Db::name('user')->alias('a')->select();

limit

  • 使用limit()方法,限制获取数据的个数
 Db::name('user')->limit(2)->select();
  • limit(),可以传递两个参数,当有两个参数时,第一个参数表示从条开始,第二个参数表示显示多个条
//这里表示从第三条开始显示5条数据
Db::name('user')->limit(2,5)->select();

page

  • page()优化limit()方法,无须计算分页条数

order

  • 使用order()方法,可以指定排序方式,默认asc
Db::name('user')->order('id','desc')->select();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lcxuan27

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值