ホームページ >php教程 >php手册 >thinkphpのフィールドメソッドの使い方まとめ、知らないこともあるかも

thinkphpのフィールドメソッドの使い方まとめ、知らないこともあるかも

WBOY
WBOYオリジナル
2016-06-21 08:50:58891ブラウズ

ThinkPHP のコヒーレント操作メソッドには、フィールド メソッドの使用テクニックが多数あります。フィールド メソッドの主な目的は、返されるフィールドまたは操作されるフィールドを識別することです。これについては、以下で詳しく説明します。

1.

のクエリに使用されます

フィールド メソッドは、クエリ操作で最も頻繁に使用されます。

  1. $Model->field('id,title,content')->select();

ここでは、フィールド メソッドを使用して、クエリ結果セット内の ID、タイトル、コンテンツの 3 つのフィールドの値を指定します。実行される SQL は次と同等です:

  1. テーブルから ID、タイトル、コンテンツを選択

もちろん、select メソッドに加えて、find などを含むすべてのクエリ メソッドで field メソッドを使用できます。ここでは例として select のみを取り上げます。
上記の例は、配列

に置き換えることもできます。
  1. $Model->field(array('id','title','content'))->select();

最終的に実行されるSQLは上記と同等になります。
^_^ 配列の使用法は複雑すぎるように思えますが、まだ結論を出さないでください。配列を使用するメリットは後で理解できるでしょう。
配列モードでの定義では、特定のフィールドのエイリアスを定義できます。例:

  1. $Model->field(array('id','title'=>'name','content'))->select();

実行される SQL は次と同等です:

  1. SELECT ID、名前としてのタイトル、テーブルからの内容

直接使用したい場合:

  1. $Model->field('id,title as name,content')->select();

間違った結果が得られる可能性があります。
いくつかのより複雑なフィールド要件の場合、次のような配列の利点がより明白になります:

  1. $Model->field(array('id','concat(name,'-',id)'=>'truename','LEFT(title,7)'=>'sub_title'))-> ;select();

実行される SQL は次と同等です:

  1. SELECT id,concat(name,'-',id) as truename,LEFT(title,7) as sub_title FROM table

SQL 関数をフィールドで使用する必要がある状況では、配列メソッドが優れたソリューションであることは誰もが理解していると思います。
フィールドメソッドにはこの効果しかありませんか?そう思うなら、あなたは ThinkPHP のフィールド メソッドを過小評価しています。ThinkPHP はあなたが思っているよりもはるかに慎重に細部を考慮しています。
まず次の状況を見てみましょう。テーブルに多数のフィールドと 2 つの要件がある場合、最初の要件はすべてのフィールドを取得することです。これは、フィールド メソッドを呼び出すことなく、または直接実行できるため、非常に簡単です。空のフィールドメソッドを使用すると、実際には次のようになります。

  1. $Model->select();
  2. $Model->field()->select();
  3. $Model->field('*')->select();

上記の 3 つの使用法は同等であり、SQL の実行と同等です:

  1. SELECT * FROM テーブル

ただし、これはすべてのフィールドを取得するという意味ではありません (高パフォーマンス要件を持つシステムの場合、この要件は過剰ではありません。少なくとも、これはより良い習慣です)。それでも、非常に単純です。 . 、次の使用法により期待される効果が得られます:

  1. $Model->field(true)->select();

fied(true) を使用すると、データ テーブルに 100 個のフィールドがある場合でも、データ テーブル内のすべてのフィールドのリストが明示的に取得されます。
2 番目の要件は、コンテンツ フィールドを除くすべてのフィールド値を取得することです (テキスト フィールドの値は非常にメモリを消費します)。たとえば、次のメソッドを使用できます。上記の機能を実現します:

  1. $Model->field('content',true)->select();

さらに多くのフィールドを除外することもできます:

  1. $Model->field('user_id,content',true)->select();
  2. // または
  3. を使用します
  4. $Model->field(array('user_id','content'),true)->select();

2.

を書くために使用されます

クエリ操作に加えて、フィールド メソッドには、フィールドの正当性検出という非常に重要なセキュリティ機能もあります (注: この機能はバージョン 3.1 以降でのみサポートされます)。 create メソッドと組み合わせたフィールド メソッドをフォーム送信の処理メソッドで使用すると、フォーム送信のフィールドの正当性の検出を完了できます。

    $Model->field('title,email,content')->create();
これは、ユーザーがブラウザの送信フィールドを変更または追加するためにどのような手段を使用しても、フォーム内の唯一の正当なフィールドは、直接ブロックされることを意味します。ユーザーの送信によって決定されたくないフィールドは他にもすべてあるため、オートコンプリート機能を使用して追加のフィールドを定義して書き込むことができます。

概要

フィールド メソッドの使用法から、小さなメソッドではあるが大きな使用法が何かを理解できるはずです。もちろん、ThinkPHP があなたの開発にさらなる利便性と驚きをもたらすことを願っています。皆さんもぜひ使用方法を共有してください。経験!



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