tp5 传参闭包查询+tp5中的where与whereor怎么同时使用 您所在的位置:网站首页 tp5url传参 tp5 传参闭包查询+tp5中的where与whereor怎么同时使用

tp5 传参闭包查询+tp5中的where与whereor怎么同时使用

2024-01-25 15:22| 来源: 网络整理| 查看: 265

在thinkPHP模型查询中,一般有两种方式:数组方式和闭包方式,相对于数组方式只能定义查询条件,闭包方式可以支持更多的连贯操作,包括排序,数量限制等。

在thinkPHP闭包查询中通常使用use进行参数传递

普通闭包查询:

$items=ItemModel::all(function($query){$query->order('sort','asc');});

带参数的闭包查询:

$items=ItemModel::all(function($query)use($type){

  $query->where('type',$type)->order('sort','asc');

})

 

 

tp5中的where与whereor同时使用一:

 

$data = db('table')->where(function($query) {

    $query->where('key1', value)->whereor('key1',value1);

})->where(['key2'=>value2,'key3'=>value3])->field('key4')->find();

生成的sql语句为:

 find key4 FROM `table` WHERE  (  `key1` = 'value' OR `key1` = 'value1' ) and  `key2` = 'value2'

 and 'key3' = 'value3';

二:

$data = db('table')->where(function($query) {

    $query->where('key1', value)->whereor('key1',value1);

})->whereor(function($query){

    $query->where(['key2'=>value2]->whereor(['key3'=>value3]))

})->field('key4')->find();

find 'key4' FROM `table` WHERE  (  `key1` = value OR `key1` = value1 )

OR (  `key2` = 'value2' OR `key3` = 'value3' )

实际场景

tp5 使用数组查询时,一个字段有多个搜索词时的写法

场景一  一个字段多个搜索错 $option['question']=[ ['like','%'.'乐刷'.'%'], ['like','%'.'666'.'%'], 'or' ];  //测试可行, 

分词查询(多条件模糊查询)在讯宝实现了

场景二-----多个字段同时匹配查询或语法 whereor闭包查询,云笔记项目搜索接口有案例$list1=Db::name('user_biji')->page($page,10)->where( function ($query)use($keyword){ $query->whereor('title','like',"%$keyword%") ->whereor('memo','like',"%$keyword%"); })->where('user_id',$this->auth->id)->field('id,title,memo,createtime,type,images')->select(); //测试可行//要使用多个whereor查询的话必须使用闭包查询的方式,否则会导致where条件失效

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有