ThinkPHP6搜索器的使用方法

这篇文章主要介绍了ThinkPHP6搜索器的使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:申请域名、虚拟空间、营销软件、网站建设、河南网站维护、网站推广。

一、了解搜索器的定义

我们依然先看看手册中关于搜索器的说明。

搜索器的作用是用于封装字段(或者搜索标识)的查询条件表达式,一个搜索器对应一个特殊的方法(该方法必须是 public 类型),方法命名规范为:

search FieldName Attr

FieldName 为数据表字段的驼峰转换,搜索器仅在调用 withSearch 方法的时候触发。

二、建立搜索条件

如何使用搜索器?我们结合实例来讲解。

ThinkPHP6搜索器的使用方法

我们有三个搜索条件分别是:goods_cate_id(分类筛选)、goods_status(状态筛选)、goods_name(关键字筛选)。

我们先建立三个搜索方法:

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,那么在定义方法的时候如下都是错误的:

1、public 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。

三、触发搜索

搜索器只有在调用 withSearch 方法的时候触发。

$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);

另外,搜索器除了可以做搜索,同时也可以做排序功能,在这里就不再举例。

在调试的时候,我们还可以打印下sql语句,如果没有我们想要的结果,我们可以直接分析sql语句。

echo Goods::getLastSql();

感谢你能够认真阅读完这篇文章,希望小编分享的“ThinkPHP6搜索器的使用方法”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!


本文标题:ThinkPHP6搜索器的使用方法
文章出自:http://myzitong.com/article/ppgiig.html