TP5多条件搜索,同时有必要条件

Posted init-007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TP5多条件搜索,同时有必要条件相关的知识,希望对你有一定的参考价值。

$model = $this->model;
        // 查询是否有搜索参数
        $search = input(‘?get.search‘) ? trim(input(‘get.search‘)) : false;

        $list = $model;
        if($search) 
            // 查询相关标签
            $searchTags = model(‘tag‘)
                    ->alias(‘a‘)
                    ->join(‘tagmap b‘, ‘b.tagid = a.id‘)
                    ->where(‘a.name‘, ‘like‘, ‘%‘ . $search . ‘%‘)
                    ->column(‘b.tid‘);
            $tagsTeacherIdsArr = preg_grep(‘/\\d+/‘ ,$searchTags);
            $tagsTeacherIds = join(‘,‘ ,array_unique($tagsTeacherIdsArr));
        // 闭包搜索 内容
$list = $list->where(function ($query) use ($search, $tagsTeacherIds) $query->whereOr(‘id‘,‘in‘,$tagsTeacherIds) ->whereOr(‘name‘, ‘like‘, ‘%‘ . $search . ‘%‘) ->whereOr(‘desc‘, ‘like‘, ‘%‘ . $search . ‘%‘); );
      // 必要条件
$list = $list->where([ ‘ispublic‘ => 1, ‘isdel‘ => 0 ]) ->order(‘sort‘,‘desc‘) ->paginate(15,false,[ ‘query‘ => request()->param() ]);

前言:where里面的条件是 && 的关系,whereOr里面的条件是 | | 的关系,

 

想要得到的效果:

    1.筛选出is_deleted字段为0(未删除)的公告

    2.筛选出全部状态为已发送(status=1)的公告

    3.状态为草稿的公告仅自己可见

技术图片

代码(红色框起来的部分):

技术图片

等价于select * from table(表名) WHERE ( `admin_id` = 当前用户的id   OR `status` = ‘1‘ ) and `is_deleted` = ‘0 ;      

 

注: 1.$params = [‘is_deleted‘=>0]     where()可以写多个条件,逗号分隔,如where([‘name‘=>‘坤坤‘,‘is_deleted‘=>0])

  2.order是排序方式

  3.field是要查找的字段

 

引用: https://www.cnblogs.com/youantianqin/p/11087098.html

以上是关于TP5多条件搜索,同时有必要条件的主要内容,如果未能解决你的问题,请参考以下文章

TP5多条件查询怎么写

tp5怎么实现搜索分页能保留搜索条件

Tp5.0中分页加搜索的用法!!!

tp5怎么实现搜索分页能保留搜索条件

TP5 多条件whereOr查询

tp5.1关于关联模型搜索haswhere和where不能同时使用的问题