Yii フレームワークに関連付けられたクエリと使用状況分析、Yii フレームワークと使用状況
この記事では、Yii フレームワークでの関連付けられたクエリの使用法を例を通して分析します。参考のためにみんなで共有してください。具体的な方法は以下の通りです
Yii フレームワークの関連クエリと mysql の関連クエリの違いは何ですか? ここでは、エディターが一緒に見ていきます。
Yii の関連クエリは確かに便利なものです。インターネット上には多くの情報がありますが、そのほとんどは Ctrl+C、Ctrl+V であり、詳しく説明した記事はありません。インターネット上の多くの情報を参照し、リソースを収集し、私自身の理解をいくつか加えた後、初心者向けに個人的な洞察を提供するためにこの記事を書きました。
YII は 4 種類の関係をサポートします:
BELONGS_TO (所属): テーブル A と B の関係が 1 対多の場合、テーブル B はテーブル A に所属します (たとえば、Post は User に所属します)。
HAS_MANY (複数あり): テーブル A と B の間の関係が 1 対多の場合、A には複数の B があります (たとえば、ユーザーには複数の Post があります);
HAS_ONE (1 つあります): これは HAS_MANY の特殊なケースであり、A は最大 1 つの B を持つことができます (たとえば、ユーザーは最大 1 つのプロファイルを持つことができます);
MANY_MANY: これはデータベース内の多対多の関係に対応します。 ほとんどの DBMS は多対多の関係を直接サポートしていないため、多対多の関係を 1 対多の関係に分割するには関係テーブルが必要です。
初心者がこれを見たら本当に理解できるでしょうか?
最初に学習を始めたとき、私はテストを繰り返した後、非常にめまいを感じました。非常に簡単に説明します。
既存のユーザー テーブルは user、ブログ テーブルはブログです。ブログは特定のユーザーに属し、ユーザーは複数のブログを公開します。
所属先:
コントローラー
コードをコピーします コードは次のとおりです:
$blogs = $blog_model->with('b_user')->find();
モデル ここでのモデルは blog_model を指します
コードをコピーします コードは次のとおりです:
'b_user'=>array(self::BELONGS_TO, 'user', 'author')
適用範囲: ブログを検索する場合、ブログの作成者を調べる必要があります。
b_user の 2 番目のパラメータ: サブテーブルのテーブル名、3 番目のパラメータ、サブテーブルの主キーを格納するために使用されるメイン テーブルのフィールド (ユーザー テーブルの主キーを格納するためにブログ テーブルで使用されるフィールド) 。
HAS_ONE:
コントローラー
コードをコピーします コードは次のとおりです:
$user_blog = $user_model->with('u_blog')->find();
モデル ここでのモデルは user_model を指します
コードをコピーします コードは次のとおりです:
'u_blog'=>array(self::HAS_ONE, 'blog', 'author')
試してみると、作者の情報だけでなく、作者のブログも見つかりました。
u_blog の 2 番目のパラメータ: サブテーブルの名前、3 番目のパラメータ、メイン テーブルの主キーの格納に使用されるサブテーブルのフィールド (ユーザー テーブルの主キーの格納に使用されるブログ テーブルのフィールド)。
たくさんあります:
コントローラー
コードをコピーします コードは次のとおりです:
$user_blogs = $user_model->with('u_blogs')->find();
モデル ここでのモデルは user_model を指します
コードをコピーします コードは次のとおりです:
'u_blogs'=>array(self::HAS_MANY, 'blog', 'author')
テストの結果、著者の情報だけでなく、著者の 1 つのブログだけでなく、著者の他のブログも見つかりました。
u_blogs の 2 番目のパラメーター: サブテーブルの名前、3 番目のパラメーター、メイン テーブルの主キーを格納するために使用されるサブテーブル内のフィールド (ユーザー テーブルの主キーを格納するために使用されるブログ テーブル内のフィールド)。
MANY_TO_MANY:
これはまだ使っていないので、テストしてから更新するつもりです。 。 。
ここまでで Yii with の最も基本的な使い方がほぼ説明されましたが、何か質問はありますか?
クエリ対象のサブテーブル フィールドを指定するにはどうすればよいですか?
このユーザーのすべての記事が HAS_MANY で見つかりました。5 つの記事だけを確認したい場合はどうすればよいですか?
...ご質問お待ちしております。
それでは、早速、最初の問題を解決しましょう
コードをコピーします コードは次のとおりです:
'u_blogs'=>array(self::HAS_MANY, 'blog', 'author','select'=>'gid,title,content' )
これを試してみませんか?
2番目の質問
コードをコピーします コードは次のとおりです:
'u_blogs'=>array(self::HAS_MANY, 'blog', 'author','select'=>'gid,title,content' ,'条件' =>'u_blogs.gid=2')
完了しました!
これらの非常に初心者向けの説明を読めば、突然理解できるはずだと思います。ことわざにあるように、最初は何事も難しいです。残りは一目で分かると思います~~~
以下の内容は Yii マニュアルからのものです:
遅延読み込みに応じて、次のオプションが利用可能です:
'グループ': 文字列、GROUP BY 句。 デフォルト値は空です。 列参照には「relationName」という接頭辞を付ける必要があることに注意してください。 (例: 関係名.年齢)。このオプションは、HAS_MANY および MANY_MANY 関係にのみ適用されます。
'having': 文字列、HAVING 句。 デフォルト値は空です。 列参照には「relationName」という接頭辞を付ける必要があることに注意してください。 (例: 関係名.年齢)。このオプションは、HAS_MANY および MANY_MANY 関係にのみ適用されます。
'limit': データ行の選択を制限します。 このオプションは BELONGS_TO には適用されません。
'offset': データ行のオフセット。 このオプションは BELONGS_TO には適用されません。
'through': 関連データを取得するときにブリッジ モデルとして使用される関係の名前。 HAS_ONE と HAS_MANY のみに設定できます。このオプションはバージョン 1.1.7 以降で使用できます。
以下は、「Post」アクティビティのクラス関連オブジェクトを記録する例です:
コードをコピーします コードは次のとおりです:
return array(
'author'=>array(self::BELONGS_TO, 'User', 'author_id'),
'comments'=>array(self::HAS_MANY, 'Comment', 'post_id', 'with'=>'author', 'order'=>'create_time DESC'),
'tags'=>array(self::MANY_MANY, 'Tag', 'post_tag(post_id, tag_id)', 'order'=>'name'),
);
この記事で説明した内容が皆さんの Yii フレームワークプログラミング設計に役立つことを願っています。
http://www.bkjia.com/PHPjc/920617.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/920617.html技術記事 Yii フレームワーク関連クエリと使用状況分析、Yii フレームワークと使用例 Yii フレームワーク関連クエリと使用状況分析。参考のためにみんなで共有してください。具体的な方法は以下の通りです: Yii フレームワーク...