複数条件検索を行う場合、従来の配列方式を使用することもできますが、今日はもう 1 つ、ThinkPHP6 サーチャーを紹介します。
1.サーチャーの定義を理解する
まずはマニュアルのサーチャーの説明を見てみましょう。
サーチャーの機能は、フィールド (または検索識別子) のクエリ条件式をカプセル化することです。サーチャーは特別なメソッドに対応します (メソッドはパブリック型である必要があります)。メソッドの名前付け規則は :
search FieldName Attr
FieldName は、データ テーブル フィールドのキャメル ケース変換です。サーチャーは、withSearch メソッドが呼び出された場合にのみトリガーされます。
2. 検索条件を設定する
サーチャーの使い方は?例を挙げて説明しましょう。
検索条件は、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 サイトの他の関連記事を参照してください。