ThinkPHP6多条件搜索查询,表达式查询 FIND_IN_SET查询
发表于:2022-01-02 12:00:25浏览:3208次
最近做项目的时候使用到ThinkPHP6的多条件搜索查询,表达式查询以及FIND_IN_SET查询,这些平时用得比较少的查询方法每次都要去查找ThinkPHP6的使用文档,不方便,所以把关键代码整理一下放这里方便以后使用。
1、ThinkPHP6的多条件搜索 and 查询
$map = []; //条件 $map[] = ['status', '=', 1]; $map[] = ['type', '=', $type]; $map[] = ['url', 'like', $url. '%']; $map[] = ['date', 'between time', [$startTime, $endTime]]; $list = Db::name('message') ->where($map) ->order($order) ->paginate(['list_rows' => $rows, 'query' => $param]) ->toArray();
2、ThinkPHP6的多条件搜索 or 查询
$map1 = []; $map2 = []; //条件1 $map1[] = ['status', '=', 1]; $map1[] = ['type', '=', $type]; $map1[] = ['date', 'between time', [$startTime, $endTime]]; //条件2 $map2[] = ['status', '=', 0]; $map2[] = ['type', '=', $type]; $map2[] = ['date', '>', $endTime]; $map2[] = ['date', '<', $startTime]; $list = Db::name('Flow') ->field('id,name,check_type') ->whereOr([$map1,$map2]) ->order('id desc') ->paginate(['list_rows' => $rows, 'query' => $param]) ->toArray();
3、ThinkPHP6的FIND_IN_SET查询
FIND_IN_SET是什么方法?用在哪些地方?举个例子来说:
有个文章表里面有个type字段,它存储的是文章类型,有 1头条、2推荐、3热点、4图文等等 。
现在有篇文章他既是头条,又是热点,还是图文,type中以 1,3,4 的格式存储。这就要我们的 find_in_set 出马的时候到了。
简单的FIND_IN_SET查询:
$list = Db::name('Flow')->whereRaw("FIND_IN_SET(3,type)")->select()->toArray();
复杂的FIND_IN_SET查询,且接收变量的查询:
//变量 $type = 1; $department =1; //查询条件 $map1 = []; $map2 = []; $map1[] = ['status', '=', 1]; $map1[] = ['type', '=', $type]; $map1[] = ['department_ids', '=', '']; $map2[] = ['status', '=', 1]; $map2[] = ['type', '=', $type]; $map2[] = ['', 'exp', Db::raw("FIND_IN_SET('{$department}',department_ids)")]; $list = Db::name('Flow') ->field('id,name,check_type') ->whereOr([$map1,$map2]) ->order('id desc') ->paginate(['list_rows' => $rows, 'query' => $param]) ->toArray();
推荐文章
- 2021年度个税汇算今起开始,3月1日至3月15日需要预约,3月16日至6月30日,无需预约
- PHP实现今天、昨天 、本周、上周、本月、上月、本季度等方法
- Windows Terminal Preview 1.15 发布
- 烦人啊!微信总是弹出企业微信邀请信息,怎么关闭通知?
- 微软推出电脑管家,干净无广告无弹窗,是时候卸载360安全卫士和腾讯电脑管了
- 编程界首部小说版教程—JavaScript百炼成仙
- PHP中,如果存在继承关系,其中子类和父类都定义了构造函数__construct(),怎么处理?
- IE11将停用并停止支持,此后IE正式谢幕,Edge接棒
- Layui的table模块导出所有数据,无需修改前后端代码
- 8个前端开发调试技能 浏览器F12高级调试技巧