ThinkPHP6多条件搜索查询,表达式查询 FIND_IN_SET查询
发表于:2022-01-02 12:00:25浏览:6258次
最近做项目的时候使用到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(); 推荐文章
- 最美的国产操作系统:深度操作系统 deepin 20.5 发布
- 开发人员常用工具或插件整理(持续更新)
- 微软推出电脑管家,干净无广告无弹窗,是时候卸载360安全卫士和腾讯电脑管了
- thinkphp6将汉字转为拼音的功能实现
- PHP根据昵称或者姓名自动生成文字头像(图片)的方法
- Layui的upload模块实现多图批量上传,无需修改代码,完美解决方案
- 2021年度个税汇算今起开始,3月1日至3月15日需要预约,3月16日至6月30日,无需预约
- phpword 使用TemplateProcessor方式实现在word模板中动态插入表格
- PHP判断网站的访问来源是否是蜘蛛
- JavaScript实现两个日期之间的工时计算,排除周末,每天工作日是8小时

