官网教程:高级查询 · ThinkPHP6.0完全开发手册 · 看云
条件查询
查询构造器支持条件查询,例如:
$condition=条件
- Db::name('user')->when($condition, function ($query) {
- // 满足条件后执行
- $query->where('score', '>', 80)->limit(10);
- })->select();
并且支持不满足条件的分支查询
- Db::name('user')->when($condition, function ($query) {
- // 满足条件后执行
- $query->where('score', '>', 80)->limit(10);
- }, function ($query) {
- // 不满足条件执行
- $query->where('score', '>', 60);
- });
例子:
- Db::name('user')->when($sex==1 && $type=1 && !empyt($score) , function ($query) {
- // 满足条件后执行
- $query->where('score', '>', 80)->limit(10);
- })
- ->field('id,type,score,sex')
- ->select();
例子:带外面参数进来判断条件use($params){
- $rsu = Db::name('order')
- ->alias('o')
- ->leftjoin('user u', 'u.id=o.user_id')
- ->when(!empty($params['state']),function($query)use($params){
- if($params['state'] == '3'){//3=等清分
- $query->whereExp('ohe.state',Db::raw('IS NULL'));
- }else if($params['state']== '10'){
- $query->where('ohe.state',0);
- }else{
- $query->where('ohe.state',$params['state']);
- }
- })
- ->select();