ThinkPHP6菜鸟教程:搜索器的使用

2023-04-1711:29:55后端程序开发Comments2,003 views字数 1354阅读模式

做多条件搜索的时候,可以使用传统的数组方式,今天给大家介绍另外一种,就是ThinkPHP6搜索器。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/34540.html

一、了解搜索器的定义文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/34540.html

我们依然先看看手册中关于搜索器的说明。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/34540.html

搜索器的作用是用于封装字段(或者搜索标识)的查询条件表达式,一个搜索器对应一个特殊的方法(该方法必须是 public 类型),方法命名规范为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/34540.html

search FieldName Attr文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/34540.html

FieldName 为数据表字段的驼峰转换,搜索器仅在调用 withSearch 方法的时候触发。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/34540.html

二、建立搜索条件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/34540.html

如何使用搜索器?我们结合实例来讲解。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/34540.html

ThinkPHP6菜鸟教程:搜索器的使用文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/34540.html

我们有三个搜索条件分别是:goods_cate_id(分类筛选)、goods_status(状态筛选)、goods_name(关键字筛选)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/34540.html

我们先建立三个搜索方法:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/34540.html

public function searchGoodsCateIdAttr($query, $value){        $query->where('goods_cate_id','in', $value);
    }    public function searchGoodsStatusAttr($query, $value){        $query->where('goods_status','=', $value);    }    public function searchGoodsNameAttr($query, $value){        $query->where('goods_name','like''%'.$value.'%');    }

要特别注意,搜索方法的命名,我们必须严格按照官方手册中的要求定义。比如说我们数据表搜索字段为goods_cate_id,那么在定义方法的时候如下都是错误的:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/34540.html

1public function searchGoodsCateId($query, $value),少Attr
2、public function searchGoodsCateIDAttr($query, $value),驼峰写法错误。
3、public function searchGoodsCateAttr($query, $value),少Id驼峰写法错误。
4、private function searchGoodsCateIdAttr($query, $value),必须是public

三、触发搜索文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/34540.html

搜索器只有在调用 withSearch 方法的时候触发。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/34540.html

$goodsData=Goods::name('goods')->withSearch(['goods_cate_id','goods_status','goods_name'],[
                'goods_cate_id'=>$cateChilerenId,
                'goods_status'=>$goods_status,
                'goods_name'=>$goods_name
            ])->paginate(10);

另外,搜索器除了可以做搜索,同时也可以做排序功能,在这里就不再举例。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/34540.html

在调试的时候,我们还可以打印下sql语句,如果没有我们想要的结果,我们可以直接分析sql语句。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/34540.html

echo Goods::getLastSql();

以上就是关于ThinkPHP6搜索器的使用讲解,那么在做多条件搜索的时候,中意哪个就用哪个,也可以根据自己情况自行选择。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/34540.html

作者:王雪芹文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/34540.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/34540.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定