溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ThinkPHP6搜索器的使用方法

發(fā)布時間:2021-01-16 11:14:57 來源:億速云 閱讀:469 作者:小新 欄目:編程語言

這篇文章主要介紹了ThinkPHP6搜索器的使用方法,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

一、了解搜索器的定義

我們依然先看看手冊中關(guān)于搜索器的說明。

搜索器的作用是用于封裝字段(或者搜索標識)的查詢條件表達式,一個搜索器對應一個特殊的方法(該方法必須是 public 類型),方法命名規(guī)范為:

search FieldName Attr

FieldName 為數(shù)據(jù)表字段的駝峰轉(zhuǎn)換,搜索器僅在調(diào)用 withSearch 方法的時候觸發(fā)。

二、建立搜索條件

如何使用搜索器?我們結(jié)合實例來講解。

ThinkPHP6搜索器的使用方法

我們有三個搜索條件分別是:goods_cate_id(分類篩選)、goods_status(狀態(tài)篩選)、goods_name(關(guān)鍵字篩選)。

我們先建立三個搜索方法:

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.'%');
    }

要特別注意,搜索方法的命名,我們必須嚴格按照官方手冊中的要求定義。比如說我們數(shù)據(jù)表搜索字段為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。

三、觸發(fā)搜索

搜索器只有在調(diào)用 withSearch 方法的時候觸發(fā)。

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

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

在調(diào)試的時候,我們還可以打印下sql語句,如果沒有我們想要的結(jié)果,我們可以直接分析sql語句。

echo Goods::getLastSql();

感謝你能夠認真閱讀完這篇文章,希望小編分享的“ThinkPHP6搜索器的使用方法”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI