tp5 传参闭包查询+tp5中的where与whereor怎么同时
在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’ ]; //测试可行,
[expander_maker id=”1″ more=”Read More” less=”Read Less”]
分词查询(多条件模糊查询)在讯宝实现了
场景二—–多个字段同时匹配查询或语法 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条件失效
[/expander_maker]
相关文章
- MySQL 简单查询语句执行过程分析(二)查询准备阶段
- 惠普硬盘型号怎么看_惠普电脑序列号查询真伪
- java数据库的介绍和使用_java实现数据库的查询
- mysql的慢查询日志怎么查看_mysql慢查询优化
- mybatis 查询的时候提示 JDBC requires that the JdbcType 错误怎么解决以mysql常用几个函数使用
- SQLServer 错误 8710 必须提供与 CUBE、ROLLUP 或 GROUPING SET 查询一起使用的聚合函数,才能合并子聚合。 若要修复此问题,请删除该聚合函数或在 GROUP BY 子句基础上使用 UNION ALL 编写查询。 故障 处理 修复 支持远程
- 利用Oracle循环查询取得最佳结果(oracle循环查询结果)
- 如何利用MySQL查询数据(mysql怎么查询数据)
- MySQL中查询主键的简易方法(mysql查询主键)
- 如何使用MySQL查询数据(mysql怎么查数据)
- 怎么查查询Linux字库:指南和方法(linux字库)
- 连接Oracle数据库,使用SQL进行查询(sql连oracle)
- 如何在MongoDB中查看数据:使用查询和聚合操作进行检索和分析。(mongodb怎么看数据)
- 如何查询MSSQL数据库的版本号(怎么看mssql的版本号)
- 位SQLServer查询结果的列名获取(sqlserver结果栏)
- 燕十八大佬带你复习MySQL,让你深入理解数据存储和查询技术(燕十八mysql复习)
- 查询SQL Server检索与查询的简单技巧(sqlserver检索或)
- Oracle关联查询实现跨表快速查询(oracle 关联怎么用)
- 使用循环查询提高redis性能(循环查询redis)
- 如何使用Oracle查询实现全表搜索(oracle全表搜索内容)
- MySQL分组查询语法详解(mysql中分组怎么写)
- MySQL如何进行一张表的查询(mysql一张表查询)
- MySQL数据表如何查询不为空的数据(mysql不为空怎么 打)
- 查询Redis缓存一步一步学会(怎么查redis缓存)
- 如何使用Redis缓存查询(怎么查redis缓存)
- Oracle联表查询三表洞察数据之美(oracle3表如何关联)
- sqlserverisnull在数据库查询中的应用
- MySql官方手册学习笔记2MySql的模糊查询和正则表达式