[√新スキル] サーチャー - 検索コードの統合管理
モデル サーチャーは、自動モデル ゲッター関数とモディファイア関数に続く 3 番目の統合管理ツールは、主にフィールド (または検索識別子) のクエリ条件式をカプセル化するために使用されます。サーチャーは特別なメソッドに対応します (メソッドはパブリック タイプである必要があります)。メソッド名の仕様は次のとおりです。 searchFieldNameAttr (FieldName は、データ テーブル フィールドのキャメル ケース変換です) サーチャーは、withSearch メソッドが呼び出された場合にのみトリガーされます。
検索者の使用シナリオは次のとおりです。
·フォームの検索条件の制限と標準化;
·事前定義されたクエリ条件により、クエリが簡素化されます。
たとえば、User モデルの name フィールドと time フィールドにサーチャーを定義する必要がある場合、次を使用できます。
<?php namespace app\index\model; use think\Model; class User extends Model { public function searchNameAttr($query, $value, $data) { $query->where('name','like', $value . '%'); } public function searchCreateTimeAttr($query, $value, $data) { $query->whereBetweenTime('create_time', $value[0], $value[1]); } }
サーチャー メソッドには 3 つのパラメーターがあり、最初のパラメーターはクエリ オブジェクト、2 番目は現在の検索識別子の値、3 番目はすべての現在の検索データ (オプション)。
次に、次のクエリを使用できます。
User::withSearch(['name', 'create_time'], [ 'name'=>'think', 'create_time'=>['2018-8-1','2018-8-5'], 'status'=>1 ]) ->select();
最終的に生成される SQL ステートメントは、
SELECT * FROM `think_user` WHERE `name` LIKE 'think%' AND `create_time` BETWEEN '2018-08-01 00:00:00' AND '2018-08-05 00:00:00'
のようになります。ステータス フィールドにデータがないことがわかります。渡されるフォームの不正なクエリ条件を回避するのは非常に良いことです。この例では、name 条件と create_time 条件のみがクエリに使用できます。
実際には、サーチャーでクエリ式を使用するだけでなく、他のクエリ コンストラクターやチェーン操作も使用できます。
たとえば、フォームで定義された並べ替えフィールドによって検索結果を並べ替える必要がある場合は、
<?php namespace app\index\model; use think\Model; class User extends Model { public function searchNameAttr($query, $value, $data) { $query->where('name','like', $value . '%'); if (isset($data['sort'])) { $query->order($data['sort']); } } public function searchCreateTimeAttr($query, $value, $data) { $query->whereBetweenTime('create_time', $value[0], $value[1]); } }
を使用できます。次に、次のクエリ
User::withSearch(['name','create_time', 'status'], [ 'name'=>'think', 'create_time'=>['2018-8-1','2018-8-5'], 'status'=>1, 'sort'=>['status'=>'desc'], ]) ->select();## を使用できます。 #最終クエリ SQL
SELECT * FROM `think_user` WHERE `name` LIKE 'think%' AND `create_time` BETWEEN '2018-08-01 00:00:00' AND '2018-08-05 00:00:00' ORDER BY `status` DESCのように、検索者のフィールド エイリアスを定義することもできます。
User::withSearch(['name' => 'nickname','create_time', 'status'], [ 'nickname'=>'think', 'create_time'=>['2018-8-1','2018-8-5'], 'status'=>1, 'sort'=>['status'=>'desc'], ]) ->select();検索されたデータはニックネーム フィールド識別子を使用しますが、引き続き検索者が識別したものを使用します。 name フィールドによる (つまり、searchNameAttr メソッド)。 サーチャーは通常、クエリ範囲と比較されます。定義されているサーチャーの数に関係なく、呼び出す必要があるのは 1 回だけです。クエリ範囲を結合する必要がある場合は、クエリを複数回呼び出す必要があります。 Db クエリ メソッドを使用している場合でも、検索関数は使用できますが、次のように検索メソッドの定義をクロージャ メソッドに変更する必要があります。
User::withSearch(['name' => function($query,$value,$data){ $query->where('name','like', $value . '%'); }, 'create_time'=>function($query,$value,$data){ $query->whereBetweenTime('create_time', $value[0], $value[1]); }], [ 'name'=>'think', 'create_time'=>['2018-8-1','2018-8-5'], 'status'=>1 ]) ->select();PHP 中国語 Web サイト、無料の
ThinkPHP 入門チュートリアル がたくさんあり、誰でも学習することができます。
この記事はhttps://blog.thinkphp.cn/783775から転載されています。
以上がThinkPHP: モデル用の 3 つの最も強力なツールの 1 つ (検索者)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、ThinkPHPの組み込みテストフレームワークについて説明し、ユニットや統合テストなどの主要な機能と、早期のバグ検出とコード品質の向上を通じてアプリケーションの信頼性を高める方法について強調しています。

記事では、リアルタイムの株式市場データフィードにThinkPhpを使用して、セットアップ、データの正確性、最適化、セキュリティ対策に焦点を当てて説明します。

この記事では、パフォーマンスの最適化、ステートレス設計、セキュリティに焦点を当てたサーバーレスアーキテクチャでThinkPhpを使用するための重要な考慮事項について説明します。コスト効率やスケーラビリティなどの利点を強調しますが、課題にも対処します

この記事では、セットアップ、ベストプラクティス、統合方法、および推奨ツールに焦点を当てたThinkPhpマイクロサービスにサービスの発見と負荷分散の実装について説明します。[159文字]。

ThinkPHPのIOCコンテナは、PHPアプリで効率的な依存関係管理のための怠zyなロード、コンテキストバインディング、メソッドインジェクションなどの高度な機能を提供します。

この記事では、ThinkPhpを使用してリアルタイムのコラボレーションツールを構築し、セットアップ、Websocket統合、セキュリティベストプラクティスに焦点を当てて説明します。

ThinkPhpは、軽量のデザイン、MVCアーキテクチャ、および拡張性を備えたSaaSアプリに利益をもたらします。スケーラビリティを向上させ、開発を速め、さまざまな機能を通じてセキュリティを改善します。

この記事では、ThinkPhpとRabbitMQを使用して分散タスクキューシステムの構築を概説し、インストール、構成、タスク管理、およびスケーラビリティに焦点を当てています。重要な問題には、Immedのような一般的な落とし穴を避けるための高可用性の確保が含まれます


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ドリームウィーバー CS6
ビジュアル Web 開発ツール

ホットトピック



