ホームページ  >  記事  >  PHPフレームワーク  >  ThinkPHP6 検索エンジンの使用

ThinkPHP6 検索エンジンの使用

王雪芹
王雪芹オリジナル
2020-06-26 17:17:343680ブラウズ

複数条件検索を行う場合、従来の配列方式を使用することもできますが、今日はもう 1 つ、ThinkPHP6 サーチャーを紹介します。

1.サーチャーの定義を理解する

まずはマニュアルのサーチャーの説明を見てみましょう。

サーチャーの機能は、フィールド (または検索識別子) のクエリ条件式をカプセル化することです。サーチャーは特別なメソッドに対応します (メソッドはパブリック型である必要があります)。メソッドの名前付け規則は :

search FieldName Attr

FieldName は、データ テーブル フィールドのキャメル ケース変換です。サーチャーは、withSearch メソッドが呼び出された場合にのみトリガーされます。

2. 検索条件を設定する

サーチャーの使い方は?例を挙げて説明しましょう。

ThinkPHP6 検索エンジンの使用

検索条件は、goods_cate_id (カテゴリーフィルタリング)、goods_status (ステータスフィルタリング)、goods_name (キーワードフィルタリング)の 3 つです。

最初に 3 つの検索メソッドを確立します。

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. パブリック関数 searchGoodsCateId($query, $value),属性が少ない

2. パブリック関数 searchGoodsCateIDAttr($query, $value) のキャメル ケースの書き方が間違っています。

3. パブリック関数 searchGoodsCateAttr($query, $value) の ID が誤ってキャメルケースで書かれています。

4. プライベート関数 searchGoodsCateIdAttr($query, $value) はパブリックである必要があります。

3. 検索のトリガー

Searcher は、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 検索エンジンの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。