【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.'%']
    ];
  }
}
相关文章
|
11月前
|
存储 关系型数据库 索引
10. 在一个非主键字段上创建了索引, 想要根据该字段查询到数据, 需要查询几次 ?
在非主键字段上创建索引,查询数据通常需两次。对于MyISAM,先通过索引找到数据行指针,再获取数据;而InnoDB则先找主键ID,再从主键索引中查找数据。
71 0
|
8月前
|
SQL 数据挖掘 数据库
|
10月前
|
SQL Java 数据库连接
大事件后端项目28------文章分类列表查询(条件分页)
大事件后端项目28------文章分类列表查询(条件分页)
|
10月前
|
关系型数据库 MySQL PHP
【thinkphp知识】thinkphp 使用union链式操作合并两个或多个 SELECT 语句的结果集,新增不存在的字段,并赋予默认值
【thinkphp知识】thinkphp 使用union链式操作合并两个或多个 SELECT 语句的结果集,新增不存在的字段,并赋予默认值
131 0
|
11月前
|
SQL 关系型数据库 MySQL
【MySQL】DQL-基础查询-语句&演示(查询多个字段 / 所有字段/并设置别名/去重)
【MySQL】DQL-基础查询-语句&演示(查询多个字段 / 所有字段/并设置别名/去重)
|
11月前
|
SQL 存储 Java
MyBatis【付诸实践 02】 mapper文件未编译+statementType使用+返回结果字段顺序不一致+获取自增ID+一个update标签批量更新记录
MyBatis【付诸实践 02】 mapper文件未编译+statementType使用+返回结果字段顺序不一致+获取自增ID+一个update标签批量更新记录
116 0
|
PHP
php遍历筛选字段的封装函数
php遍历筛选字段的封装函数
68 1
|
数据采集 PHP 数据格式
php清洗数据实战案例(3):关联数组键值筛选排除创建新的数组
php清洗数据实战案例(3):关联数组键值筛选排除创建新的数组
73 0
|
PHP
thinkphp获取数据表中的字段信息和数据表的信息
thinkphp获取数据表中的字段信息和数据表的信息
307 0
|
PHP 数据库
thinkphp 获取数据库中的表名并去除黑名单
thinkphp 获取数据库中的表名并去除黑名单
118 0