ThinkPHP6多条件搜索查询,表达式查询 FIND_IN_SET查询
发表于:2022-01-02 12:00:25浏览:4728次
最近做项目的时候使用到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();
推荐文章
- composer 镜像操作以及常用命令收集
- ThinkPHP发布安全更新版本(V6.1.0/V6.0.14),移除对think-filesystem库的依赖
- 简单几行代码实现JS复制文字到剪切板的功能,兼容IE浏览器
- 今晚新剧,碧血玄黄7/8集:金锋动,银剑现,道象阴阳变
- 用ECharts的getDataURL方法自动下载Chart图到服务器
- 强大的图片查看器插件Viewer.js,开源中国在用的文章图片查看器
- 8个前端开发调试技能 浏览器F12高级调试技巧
- 电商网站商品的推广分销的的流程图
- uniapp中webview支持history.back的方法
- nginx跨域访问,需要如何配置?宝塔面板如何配置跨域?