TP5多条件搜索,同时有必要条件
$model = $this->model;
// 查询是否有搜索参数
$search = input('?get.search') ? trim(input('get.search')) : false; $list = $model;
if($search) {
// 查询相关标签
$searchTags = model('tag')
->alias('a')
->join('tagmap b', 'b.tagid = a.id')
->where('a.name', 'like', '%' . $search . '%')
->column('b.tid');
$tagsTeacherIdsArr = preg_grep('/\d+/' ,$searchTags);
$tagsTeacherIds = join(',' ,array_unique($tagsTeacherIdsArr));
// 闭包搜索 内容
$list = $list->where(function ($query) use ($search, $tagsTeacherIds) {
$query->whereOr('id','in',$tagsTeacherIds)
->whereOr('name', 'like', '%' . $search . '%')
->whereOr('desc', 'like', '%' . $search . '%');
});
}
// 必要条件
$list = $list->where([
'ispublic' => 1,
'isdel' => 0
])
->order('sort','desc')
->paginate(15,false,[
'query' => request()->param()
]);
前言:where里面的条件是 && 的关系,whereOr里面的条件是 | | 的关系,
如果不用闭包,直接在外面whereOr的话会查询数据库所有的,条件就不起作用了
想要得到的效果:
1.筛选出is_deleted字段为0(未删除)的公告
2.筛选出全部状态为已发送(status=1)的公告
3.状态为草稿的公告仅自己可见

代码(红色框起来的部分):

等价于select * from table(表名) WHERE ( `admin_id` = 当前用户的id OR `status` = '1' ) and `is_deleted` = '0 ;
注: 1.$params = ['is_deleted'=>0] where()可以写多个条件,逗号分隔,如where(['name'=>'坤坤','is_deleted'=>0])
2.order是排序方式
3.field是要查找的字段
引用: https://www.cnblogs.com/youantianqin/p/11087098.html
TP5多条件搜索,同时有必要条件的更多相关文章
- Node.js、express、mongodb 实现分页查询、条件搜索
前言 在上一篇Node.js.express.mongodb 入门(基于easyui datagrid增删改查) 的基础上实现了分页查询.带条件搜索. 实现效果 1.列表第一页. 2.列表第二页 3. ...
- php多条件搜索
PHP多条件查询 December : Tuesdayby 小屋 在我们的网站设计过程中,经常会用到多条件查询,本文的源码是一个二手房屋查询的例子.在本例中,我们要实现能够通过地理位置,物业类型,房屋 ...
- 对于唯一索引使用唯一条件搜索, InnoDB 只锁定找到的index record,不是它之前的区间
| test100 | CREATE TABLE `test100` ( `sn` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增编号', `phoneNo` ...
- Lucene第二篇【抽取工具类、索引库优化、分词器、高亮、摘要、排序、多条件搜索】
对Lucene代码优化 我们再次看回我们上一篇快速入门写过的代码,我来截取一些有代表性的: 以下代码在把数据填充到索引库,和从索引库查询数据的时候,都出现了.是重复代码! Directory dire ...
- 多条件搜索问题 -sql拼接与参数化查询
来源:传智播客 免费开发视频. 问题:根据书名或出版社或作者查询书籍信息. using System; using System.Collections.Generic问题; using Syste ...
- 全字段多条件搜索(api接口)
近期在做项目时遇到了一个全表全字段多条件搜索的需求,在平时搜索最常见的就是 字段+like +‘% 条件%’这种模式,但遇到多条件多字段时,这种就不适用了. 表字段已知,条件未知,条件数量未知,这种情 ...
- SQL Server通过条件搜索获取相关的存储过程等对象
在SQL Server中,我们经常遇到一些需求,需要去搜索存储过程(Procedure).函数(Function)等对象是否包含某个对象或涉及某个对象,例如,我需要查找那些存储过程.函数是否调用了链接 ...
- 利用Lucene.net搜索引擎进行多条件搜索的做法
利用Lucene.net搜索引擎进行多条件搜索的做法 2018年01月09日 ⁄ 搜索技术 ⁄ 共 613字 ⁄ 字号 小 中 大 ⁄ 评论关闭 利用Lucene.net搜索引擎进行多条件搜索的做法 ...
- CodeIgniter框架多条件搜索查询分页功能解决方案
最近在用ci框架写功能的时候,需要用到分页功能,本来寻常的数据结果分页是比较简单的,但是这次写的功能是多条件搜索查询分页,就有点难度了,看官方手册下面评论好多人问, 正常的分页功能例子是这样的: $t ...
随机推荐
- 课程设计-基于SSM的美容美发造型预约管理系统代码Java理发剪发设计造型系统vue美发店管理系统
注意:该项目只展示部分功能,如需了解,评论区咨询即可. 1.开发环境 开发语言:Java 后台框架:SSM 前端框架:vue 数据库:MySQL 设计模式:MVC 架构:B/S 源码类型: Web 编 ...
- 从跨域与同源策略谈CSRF防御与绕过
之前偶然看到群里有小伙汁问这个token相关的问题,当时我酝酿了一下子,没想好怎么总结,今天来说一下 CSRF在过去还属于OWASP TOP10 ,现在已经不是了(补充一点:关于OWASP API 请 ...
- Linux下的段错误(Segmentation fault)
Linux下的段错误(Segmentation fault) 段错误是指:访问了系统分配给程序的内存空间之外起的内存空间,比如: 访问不存在的地址 访问受系统保护的地址 访问了只读内存地址 内存访问越 ...
- 利用ST-LINK配合ST-LINK Utility 将bin文件下载到STM32的FLASH中
文章目录 背景 1.连接ST-LINK V2与单片机 2.配置工程 3.配置ST-LINK Utility 4.烧录bin文件 背景 项目需求,要把字模文件导入到32中FLASH的指定地址,使用了ST ...
- C# AppDomain 详解
AppDomain 详解 AppDomain是CLR的运行单元,它可以加载Assembly.创建对象以及执行程序. AppDomain是CLR实现代码隔离的基本机制.每一个AppDomain可以单独运 ...
- 狂神说SpringBoot02:运行原理初探
狂神说SpringBoot系列连载课程,通俗易懂,基于SpringBoot2.2.5版本,欢迎各位狂粉转发关注学习. 微信公众号:狂神说(首发) Bilibili:狂神说Java(视频) 未经作 ...
- C# Monitor.TryEnter 源码跟踪
source: Monitor 获取指定对象的独占锁. [MethodImpl(MethodImplOptions.InternalCall), SecuritySafeCritical, __Dyn ...
- jQuery中的基本选择器(四、一):* 、 . 、element(直接标签名)、 或者用逗号隔开跟多个
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 虚拟机VMWare开机黑屏 无法进入系统
参考了: https://blog.csdn.net/x534119219/article/details/79497264 可能方案一: 关闭VMware Workstation加速3D图形设置 可 ...
- Qt5-调试器安装
这周末正好有空,我好好研究了下如何给Qt安装调试器.我们在windows下一般安装两种Qt版本,一种是基于Visual Stuido编译器的(MSVC),另一种是基于g++的MinGW.使用后者一般调 ...