【ThinkPHP】like同一个字段多个条件查询

简介: 【ThinkPHP】like同一个字段多个条件查询

屏幕快照 2022-05-19 下午2.23.52.png

#代码呈现
$a = '2017,欧美,动作';
# 如果参数是这样的一点问题没有
$where['category'] = ['like','%'.$a.'%'];
$a = '2017,动作';
# 如果参数是这样的那就直接凉  因为like是全量匹配不会分开匹配
$where['category'] = ['like','%'.$a.'%'];

屏幕快照 2022-05-19 下午2.24.09.png

解决问题


我们发现了问题那么我们是不是就可以考虑一下


既然单个可以查询到 那么我们就把参数进行分割一下,分割为数组,然后进行拼接like查询


但是这个时候问题来了,很多人都是没有做过同一字段多个条件查询的


大多数的场景都是多个字段对应多个查询条件


这个时候或许就会想到用sql开始拼接 当然也可以实现,但是今天的主题不在这里


屏幕快照 2022-05-19 下午2.24.41.png

$a = '2017,欧美,动作';
$category = implode(',',$a);
foreach($category as $k => $v) {
  $where['category'] = [
    ['like','%'.$v.'%']
  ];
}


屏幕快照 2022-05-19 下午2.25.11.png

$a = '2017,欧美,动作';
$category = implode(',',$a);
$where = [];
if(count($category) === 1){
  $where['category'] = ['like','%'.$category.'%'];
}else{
  foreach($category as $k => $v) {
    $where['category'] = [
      ['like','%'.$v.'%']
    ];
  }
}
相关文章
|
17天前
|
存储 关系型数据库 索引
10. 在一个非主键字段上创建了索引, 想要根据该字段查询到数据, 需要查询几次 ?
在非主键字段上创建索引,查询数据通常需两次。对于MyISAM,先通过索引找到数据行指针,再获取数据;而InnoDB则先找主键ID,再从主键索引中查找数据。
11 0
|
SQL 存储 运维
order by 字段到底要不要加索引?[大坑]
order by 字段到底要不要加索引?[大坑]
159 0
order by 字段到底要不要加索引?[大坑]
|
11月前
|
PHP
thinkphp获取数据表中的字段信息和数据表的信息
thinkphp获取数据表中的字段信息和数据表的信息
161 0
|
11月前
|
PHP 数据库
thinkphp 获取数据库中的表名并去除黑名单
thinkphp 获取数据库中的表名并去除黑名单
62 0
【TP5】关联预加载只查询指定字段(类的属性不存在)
【TP5】关联预加载只查询指定字段(类的属性不存在)
455 0
【TP5】关联预加载只查询指定字段(类的属性不存在)
|
SQL Java 数据库连接
MyBatis:关联查询,相同字段名冲突(关联查询只返回了一条子记录)
MyBatis:关联查询,相同字段名冲突(关联查询只返回了一条子记录)
250 0
MyBatis:关联查询,相同字段名冲突(关联查询只返回了一条子记录)
|
JavaScript 前端开发 PHP
ThinkPHP多表联合查询以及自带分页类用法
ThinkPHP多表联合查询以及自带分页类用法
254 0
thinkphp5 根据条件查询表中多列数据
$where = array(); $where['discount_price'] = ['
1934 0
|
PHP
Laravel返回不重复的某个字段信息列表
->groupBy('brand_id') ->pluck('brand_id');  学习交流群:364976091
1736 0