tp5 Db查询时一个字段多个值迷糊查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tp5 Db查询时一个字段多个值迷糊查询相关的知识,希望对你有一定的参考价值。

比如:
p_name 字段的值为 12345 我现在传过来的值却是不确定的 有可能是123 || 234 || 345 当然这样是可以查到的 但当我传过来的值为124 || 245 || 135 *值为打乱的*这样子就查不到了 所以我只能是把传过来的值拆分成为数组$aa= array(0=》1 1=》2 2=》3) *这里简略写一下 理解就好* 然后把数组里的值作为sql语句的where条件 但是这里array数组又是不固定的 有可能是1个值 也有可能是2 3 4 5 6 7个值都有可能 所以我也不可能$aa['0'], $aa['1']这样直接指定where条件 我想到的是foreach循环 但是小弟我又不会在sql语句里面写循环 所以望大神指点

参考技术A $arr = array('1','12','13','15');
$res = model('UserInfo')->where(function($query) use ($arr)
    foreach ($arr as $key=>$val)
        $query->whereOr('nickName', 'like', '%'.$val.'%');
    
)->select(false);
print_r($res);exit;
//输出结果
/*SELECT * FROM `userInfo` WHERE 
( ( `nickName` LIKE '%1%' 
OR `nickName` LIKE '%12%' 
OR `nickName` LIKE '%13%' 
OR `nickName` LIKE '%15%' ) )*/

参考技术B 模糊查询
$where[] = ['title','like',"%".$sotitle."%"];

in查询
$where1 = [ ['role_id', 'in', '1,2,3'], ];

另一种方式:

if($sotitle)if($sotype=="id") $where[$sotype] = $sotitle; else $where = [ ['title', 'like', "%".$sotitle."%"],

TP数据查询给sql给查询加一个虚拟字段值

:查询一个表时,里面只有id主键,age年龄,name名字,三个字段,现在需要给他加一个固定字段type类型,全部等于1。

//新增一个字段type,值固定为1 
$field = id,age,name,1 AS type;

//新增一个字段type,值等于id
$field = id,age,name,id AS type;

$list = $this->where($where)->field($field)->order($order)->select();

以上是关于tp5 Db查询时一个字段多个值迷糊查询的主要内容,如果未能解决你的问题,请参考以下文章

TP5.1 文章分类用逗号隔开,怎么查询属于多个分类的数据?

sql如何根据一个字段的多个值查询

tp5.1 高级查询之 表里2字段比较大小

TP5多条件查询怎么写

mysql分组查询时,讲多个值合并在一行显示

tp5 查询单个字段的值