$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多条件搜索,同时有必要条件的更多相关文章

  1. Node.js、express、mongodb 实现分页查询、条件搜索

    前言 在上一篇Node.js.express.mongodb 入门(基于easyui datagrid增删改查) 的基础上实现了分页查询.带条件搜索. 实现效果 1.列表第一页. 2.列表第二页 3. ...

  2. php多条件搜索

    PHP多条件查询 December : Tuesdayby 小屋 在我们的网站设计过程中,经常会用到多条件查询,本文的源码是一个二手房屋查询的例子.在本例中,我们要实现能够通过地理位置,物业类型,房屋 ...

  3. 对于唯一索引使用唯一条件搜索, InnoDB 只锁定找到的index record,不是它之前的区间

    | test100 | CREATE TABLE `test100` ( `sn` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增编号', `phoneNo` ...

  4. Lucene第二篇【抽取工具类、索引库优化、分词器、高亮、摘要、排序、多条件搜索】

    对Lucene代码优化 我们再次看回我们上一篇快速入门写过的代码,我来截取一些有代表性的: 以下代码在把数据填充到索引库,和从索引库查询数据的时候,都出现了.是重复代码! Directory dire ...

  5. 多条件搜索问题 -sql拼接与参数化查询

    来源:传智播客  免费开发视频. 问题:根据书名或出版社或作者查询书籍信息. using System; using System.Collections.Generic问题; using Syste ...

  6. 全字段多条件搜索(api接口)

    近期在做项目时遇到了一个全表全字段多条件搜索的需求,在平时搜索最常见的就是 字段+like +‘% 条件%’这种模式,但遇到多条件多字段时,这种就不适用了. 表字段已知,条件未知,条件数量未知,这种情 ...

  7. SQL Server通过条件搜索获取相关的存储过程等对象

    在SQL Server中,我们经常遇到一些需求,需要去搜索存储过程(Procedure).函数(Function)等对象是否包含某个对象或涉及某个对象,例如,我需要查找那些存储过程.函数是否调用了链接 ...

  8. 利用Lucene.net搜索引擎进行多条件搜索的做法

    利用Lucene.net搜索引擎进行多条件搜索的做法 2018年01月09日 ⁄ 搜索技术 ⁄ 共 613字 ⁄ 字号 小 中 大 ⁄ 评论关闭 利用Lucene.net搜索引擎进行多条件搜索的做法 ...

  9. CodeIgniter框架多条件搜索查询分页功能解决方案

    最近在用ci框架写功能的时候,需要用到分页功能,本来寻常的数据结果分页是比较简单的,但是这次写的功能是多条件搜索查询分页,就有点难度了,看官方手册下面评论好多人问, 正常的分页功能例子是这样的: $t ...

随机推荐

  1. Solon 1.5.24 发布

    本次版本主要变化: 修复 solon.extend.sessionstate.jwt 在特定场景下会无限次解析的问题 优化 solon.extend.cors 对头信息的处理 插件 solon.boo ...

  2. Longhorn 企业级云原生分布式容器存储-券(Volume)和节点(Node)

    内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 云原生分布式块存储解决方案设计架构和概念 Longhorn 企业级云原生容器存储解决方 ...

  3. PHP下对Mysql数据库的操作

    PHP连接数据库: 使用 mysqli-connect()函数,函数里面至少填三个变量:host,用户名,密码. $dbHost="localhost"; $dbUser=&quo ...

  4. Windows10 + Chrome 触发蓝屏

    姿势一: 打开Chrome,输入路径:\\.\globalroot\device\condrv\kernelconnect 姿势二: 将代码 <iframe src="\\.\glob ...

  5. 题解 数列 及exgcd总结

    传送门 自闭了--考场上exgcd打错然后对着屏幕自闭了一个小时不知道它为什么解得不对 开始恶补: 对于方程 \(a*x+b*y=c\) ,就等价于 \(a*x \equiv c\pmod{b}\) ...

  6. WPF三维立体效果3D

    并不是真的3D,类似游戏的2.5D. 先上效果图. 变形一下也可以 起先我是想,把这种绘图啊啥的,都做成控件,给别人直接用就行了.但是做的过程中发现. 要做简单易用的控件,实在是花时间.  而且花的时 ...

  7. Linux中的静态库与动态库

    什么是库文件? 库文件是事先编译好的方法的合集.比如:我们提前写好一些数据公式的实现,将其打包成库文件,以后使用只需要库文件就可以,不需要重新编写. Linux系统中: 1.静态库的扩展名为.a:2. ...

  8. 通过refresh响应头,定时刷新或隔n秒跳转页面

    package day08; import java.io.IOException; import javax.servlet.ServletException; import javax.servl ...

  9. Java程序设计学习笔记(六) — 网络编程

    时间:2016-5-8 02:03 --网络编程        网络传输实际上就是进行数据传输.    一.传输的步骤:        1.对对方IP地址进行定位.        2.将数据打包发送到 ...

  10. 跟着华为,学数字化转型(8):组织转型之业务IT一体化

    数字化时代,技术已经成了企业发展的重要驱动力,是转型中的企业不可或缺的力量.那采用什么样的组织结构,才能发挥出技术能力的最大价值呢?华为经历了多种组织形式,最终得出的结论是业务IT一体化组织是最合适的 ...