ThinkPHP のコヒーレント操作メソッドには、フィールド メソッドの使用テクニックが多数あります。フィールド メソッドの主な目的は、返されるフィールドまたは操作されるフィールドを識別することです。これについては、以下で詳しく説明します。
フィールド メソッドは、クエリ操作で最も頻繁に使用されます。
ここでは、フィールド メソッドを使用して、クエリ結果セット内の ID、タイトル、コンテンツの 3 つのフィールドの値を指定します。実行される SQL は次と同等です:
もちろん、select メソッドに加えて、find などを含むすべてのクエリ メソッドで field メソッドを使用できます。ここでは例として select のみを取り上げます。
上記の例は、配列
最終的に実行されるSQLは上記と同等になります。
^_^ 配列の使用法は複雑すぎるように思えますが、まだ結論を出さないでください。配列を使用するメリットは後で理解できるでしょう。
配列モードでの定義では、特定のフィールドのエイリアスを定義できます。例:
実行される SQL は次と同等です:
直接使用したい場合:
間違った結果が得られる可能性があります。
いくつかのより複雑なフィールド要件の場合、次のような配列の利点がより明白になります:
実行される SQL は次と同等です:
SQL 関数をフィールドで使用する必要がある状況では、配列メソッドが優れたソリューションであることは誰もが理解していると思います。
フィールドメソッドにはこの効果しかありませんか?そう思うなら、あなたは ThinkPHP のフィールド メソッドを過小評価しています。ThinkPHP はあなたが思っているよりもはるかに慎重に細部を考慮しています。
まず次の状況を見てみましょう。テーブルに多数のフィールドと 2 つの要件がある場合、最初の要件はすべてのフィールドを取得することです。これは、フィールド メソッドを呼び出すことなく、または直接実行できるため、非常に簡単です。空のフィールドメソッドを使用すると、実際には次のようになります。
上記の 3 つの使用法は同等であり、SQL の実行と同等です:
ただし、これはすべてのフィールドを取得するという意味ではありません (高パフォーマンス要件を持つシステムの場合、この要件は過剰ではありません。少なくとも、これはより良い習慣です)。それでも、非常に単純です。 . 、次の使用法により期待される効果が得られます:
fied(true) を使用すると、データ テーブルに 100 個のフィールドがある場合でも、データ テーブル内のすべてのフィールドのリストが明示的に取得されます。
2 番目の要件は、コンテンツ フィールドを除くすべてのフィールド値を取得することです (テキスト フィールドの値は非常にメモリを消費します)。たとえば、次のメソッドを使用できます。上記の機能を実現します:
さらに多くのフィールドを除外することもできます:
クエリ操作に加えて、フィールド メソッドには、フィールドの正当性検出という非常に重要なセキュリティ機能もあります (注: この機能はバージョン 3.1 以降でのみサポートされます)。 create メソッドと組み合わせたフィールド メソッドをフォーム送信の処理メソッドで使用すると、フォーム送信のフィールドの正当性の検出を完了できます。
概要