ThinkPHP6 検索エンジンの使用

王雪芹
リリース: 2020-06-30 13:46:46
オリジナル
3771 人が閲覧しました

複数条件検索を行う場合、従来の配列方式を使用することもできますが、今日はもう 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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!