ホームページ >バックエンド開発 >PHPチュートリアル >ThinkPHP ビュークエリ詳細説明_PHP チュートリアル

ThinkPHP ビュークエリ詳細説明_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:26:22908ブラウズ

ThinkPHP が提供するビュー クエリ アプリケーション機能は非常に強力です。ユーザーはビュー クエリ機能を使用して、必要に応じて複数のデータ テーブルのフィールドの内容を指定およびフィルターし、これらのデータ テーブルに基づいてビュー モデルに編成し、直接使用できます。複数のテーブルに対して結合クエリを実行するのは非常に便利で簡単です。

たとえば、プロジェクトでは、次の 3 つのテーブルを定義します。

user ユーザーベーステーブル、

user_info ユーザー詳細テーブル、
部 部門分類表

次に、特定のユーザー情報を取得する必要があります、

この情報には、ユーザーのアカウント名と関連情報、部門名が含まれる必要があります。
現時点では、ビュー クエリを使用して処理できます。

説明のために次の例を示します。

1. 新しいプロジェクトをビルドし、関連する設定を実行します (前のチュートリアルを参照してください。ここでは省略します)

2. データベース tpview を作成し、これら 3 つのテーブルを追加します

(1) ユーザーテーブル

リーリー

(2) ユーザー情報テーブル

リーリー

(3)部門分類表

リーリー

3. これら 3 つのテーブルの基本モデル Model を project/Lib/Model の下に作成します
この例には検証などの他の機能は含まれていないため、

などのテストを単純に定義するだけで済みます。

リーリー

実際には、ビューモデルに対応するデータテーブルには、必ずしも対応する基本モデルがあるわけではありませんが、単一のテーブルとビューの両方が動作できるように作成することをお勧めします。

4. ビューモデルを作成します。コードは次のとおりです。詳細な注釈は以下に示されています。

(注: 最新の svn では動的拡張モデル機能が追加されました。新しいバージョンを使用するには、protected 属性を public 属性に変更する必要があります。動的拡張機能を使用して、継承メソッドの代わりにビュー クエリを使用することをお勧めします。このチュートリアルでは、より柔軟になります。)


リーリー

上記のコードは次のように説明されます:

コードの 2 行目では、TP バージョン 1.6 以降、ビュー クエリが元の Model クラスから分離されているため、インポート メソッドを使用してビュー モデル クラスをここに導入する必要があります。

コードの 3 行目で、モデル名は UserViewModel として定義されています。ビュー モデル Model の前の名前は任意であり、通常は xxxViewModel などの名前を付けます。また、ViewModel を継承する必要があります。 (ThinkPHP バージョン 1.6 では、モデルの viewModel 属性を true に設定する必要はなくなりました。ViewModel を継承するだけです)

コードの 4 行目の $viewFields 属性は、ビュー モデルに含まれるフィールドを表します。各要素は、各データ テーブルまたはモデルに必要なフィールドを定義します。

形式は

です

リーリー


コードの 7 行目の「name」=>「dept」に注目してください。User モデルにはすでに name フィールドがあるため、この方法で Dept モデルの name フィールドを dept フィールドにマッピングします。同じ方法でさらにフィールドを追加できます。

定義が完了したら、Actionでテストします。コードは次のとおりです。
リーリー

次に、操作にアクセスすると、必要なクエリのコンテンツが正常に取得されたことがわかります。

リーリー

そして、SQL が次のように使用されていることがわかります

リーリー


ビューモデルのクエリモデルは、通常の単一テーブルとあまり変わりません

、順序や制限など、よく知られているさまざまな一貫した操作を使用できます。

http://www.bkjia.com/PHPjc/824730.html

www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/824730.html技術記事 ThinkPHP が提供するビュー クエリ アプリケーション機能は非常に強力で、ユーザーはビュー クエリ機能を使用して、必要に応じて複数のデータ テーブルのフィールドの内容を指定およびフィルターし、それらを 1 つのデータ テーブルに編成できます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。