Yii框架关联查询with用法分析,yii框架with用法
Yii框架关联查询with用法分析,yii框架with用法
本文实例分析了Yii框架关联查询with用法。分享给大家供大家参考。具体方法如下:
Yii框架关联查询与mysql中的关联查询会有什么区别呢?这里小编就与各位来一起来看看吧。
Yii的关联查询确实是一个方便的东西,网上的资料也很多,但是大部分都是Ctrl+c,Ctrl+v,有些东西一直没有人出来详细的写篇文章说明一下,在参考了网上很多资源以后,加上自己的的一些理解,写下了这篇文章,给广大初学者朋友们提供一点个人见解。
YII 支持四种类型的关系:
BELONGS_TO(属于): 如果表 A 和 B 之间的关系是一对多,则 表 B 属于 表 A (例如 Post 属于 User);
HAS_MANY(有多个): 如果表 A 和 B 之间的关系是一对多,则 A 有多个 B (例如 User 有多个 Post);
HAS_ONE(有一个): 这是 HAS_MANY 的一个特例,A 最多有一个 B (例如 User 最多有一个 Profile);
MANY_MANY: 这个对应于数据库中的 多对多 关系。 由于多数 DBMS 不直接支持 多对多 关系,因此需要有一个关联表将 多对多 关系分割为 一对多 关系。
菜鸟们看到这个真的能明白吗?
初学的时候,个人表示头晕至极,经过反复的测试,我给大家非常直白的解释一下。
现有用户表user和博客表blog,博客是属于某个用户的,而用户会发表多篇博客。
BELONGS_TO:
controller
复制代码 代码如下:
$blogs = $blog_model->with('b_user')->find();
model 这里的model指的是blog_model
复制代码 代码如下:
'b_user'=>array(self::BELONGS_TO, 'user', 'author')
适用范围,查找博客的时候需要把博客的作者也查出来。
b_user中第二个参数:子表的表名,第三个参数,主表中用于存子表主键的字段(blog表中用于存user表主键的字段)。
HAS_ONE:
controller
复制代码 代码如下:
$user_blog = $user_model->with('u_blog')->find();
model 这里的的model指的是user_model
复制代码 代码如下:
'u_blog'=>array(self::HAS_ONE, 'blog', 'author')
测试一下,不仅仅查出了作者的信息,而且还查出了一篇该作者的博客。
u_blog中的第二个参数:子表表名,第三个参数,子表中用于存主表主键的字段(blog表中用于存user表主键的字段)。
HAS_MANY:
controller
复制代码 代码如下:
$user_blogs = $user_model->with('u_blogs')->find();
model 这里的的model指的是user_model
复制代码 代码如下:
'u_blogs'=>array(self::HAS_MANY, 'blog', 'author')
测试一下,不仅仅查出了作者的信息,也不仅仅查出了一篇该作者的博客,而且还查出了该作者其它的博客。
u_blogs中的第二个参数:子表表名,第三个参数,子表中用于存主表主键的字段(blog表中用于存user表主键的字段)。
MANY_TO_MANY:
这个东西啊,我还没用过,貌似基本上也不会用到,待我测一下,再来续上。。。
至此,Yii with的最最基本用法说的差不多了,但是你就没有啥疑问吗?
如何指定要查询的子表字段?
HAS_MANY中查出了该用户的所有文章,如果我只想要查5篇呢?
……等你来提问。
那么,废话不多说,解决第一个问题
复制代码 代码如下:
'u_blogs'=>array(self::HAS_MANY, 'blog', 'author','select'=>'gid,title,content')
这样试试?
第二个问题
复制代码 代码如下:
'u_blogs'=>array(self::HAS_MANY, 'blog', 'author','select'=>'gid,title,content','condition'=>'u_blogs.gid=2')
搞定!
相信看过这些非常小白的讲解后应该恍然大悟了吧。此所谓万事开头难啊,剩下的东西相信你一看就懂了~~~
以下内容来自Yii手册:
延迟加载时有一定的关系,下列选项可用:
'group': string, GROUP BY子句。 默认值为空。 注意,列引用需要加入'relationName'前缀 。(例如: relationName.age)。此选项仅适用于HAS_MANY 和 MANY_MANY 关系。
'having': string, HAVING子句。 默认值为空。 注意,列引用需要加入'relationName'前缀 。(例如: relationName.age)。此选项仅适用于HAS_MANY 和 MANY_MANY 关系。
'limit': 数据行的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框架程序设计有所帮助。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

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

ホットトピック











12306 チケット予約アプリの最新バージョンをダウンロードします。誰もが非常に満足している旅行チケット購入ソフトウェアです。行きたい場所に行くのに非常に便利です。ソフトウェアには多くのチケット ソースが提供されています。本物のチケットを渡すだけで済みます。 - 氏名認証によるオンラインチケット購入 全ユーザー 旅行券や航空券を簡単に購入でき、さまざまな割引が受けられます。また、チケットを入手するための事前予約も開始できます。ホテルや特別な車の送迎も予約できます。これを使用すると、ワンクリックで行きたい場所に行き、チケットを購入できます。旅行がより簡単で便利になり、すべての人に旅行体験を提供します編集者はオンラインで詳細を説明するようになり、12306 人のユーザーに過去のチケット購入記録を表示する方法が提供されます。 1. Railway 12306 を開き、右下隅の [My] をクリックして、[My Order] をクリックします。 2. 注文ページで [Paid] をクリックします。 3. 有料ページにて

Xuexin.com で私の学歴を確認するにはどうすればよいですか? Xuexin.com で学歴を確認できますが、多くのユーザーは Xuexin.com で学歴を確認する方法を知りません。次に、エディターが Xuexin.com で学歴を確認する方法に関するグラフィック チュートリアルを提供します。興味のあるユーザーはぜひ見に来てください! Xuexin.com の使用方法チュートリアル: Xuexin.com で学歴を確認する方法 1. Xuexin.com の入り口: https://www.chsi.com.cn/ 2. Web サイトのクエリ: ステップ 1: Xuexin.com のアドレスをクリックします。上記をクリックしてホームページに入ります [教育クエリ]をクリックします; ステップ2: 最新のWebページで下図の矢印に示すように[クエリ]をクリックします; ステップ3: 新しいページで[学術単位ファイルにログイン]をクリックします; ステップ4: ログインページで情報を入力し、[ログイン]をクリックします。

MySQL と PL/SQL は 2 つの異なるデータベース管理システムであり、それぞれリレーショナル データベースと手続き型言語の特性を表しています。この記事では、具体的なコード例を示しながら、MySQL と PL/SQL の類似点と相違点を比較します。 MySQL は、構造化照会言語 (SQL) を使用してデータベースを管理および操作する、一般的なリレーショナル データベース管理システムです。 PL/SQL は Oracle データベースに固有の手続き型言語であり、ストアド プロシージャ、トリガー、関数などのデータベース オブジェクトを記述するために使用されます。同じ

Apple の携帯電話を使用してアクティベーション日を確認する場合、携帯電話のシリアル番号から確認するのが最善の方法ですが、Apple の公式 Web サイトにアクセスし、コンピュータに接続して 3 番目のバージョンをダウンロードすることでも確認できます。 -party ソフトウェアを使用して確認します。 Apple 携帯電話のアクティベーション日を確認する方法 回答: シリアル番号のクエリ、Apple 公式 Web サイトのクエリ、コンピュータのクエリ、サードパーティ ソフトウェアのクエリ 1. ユーザーにとって最善の方法は、自分の携帯電話のシリアル番号を知ることです。シリアル番号を確認するには、[設定]、[一般]、[このマシンについて] を開きます。 2. シリアル番号を使用すると、携帯電話のアクティベーション日を知るだけでなく、携帯電話のバージョン、携帯電話の製造元、携帯電話の工場出荷日などを確認することもできます。 3. ユーザーは Apple の公式 Web サイトにアクセスしてテクニカル サポートを見つけ、ページの下部にあるサービスと修理の欄を見つけて、そこで iPhone のアクティベーション情報を確認します。 4. ユーザー

タイトル: Oracle を使用してテーブルがロックされているかどうかをクエリする方法Oracle データベースでは、テーブル ロックとは、トランザクションがテーブルに対して書き込み操作を実行しているときに、他のトランザクションがテーブルに対して書き込み操作を実行したり、テーブルに構造変更 (列の追加、行の削除など) を加えたりするときにブロックされることを意味します。 、など)。実際の開発プロセスでは、トラブルシューティングを改善し、関連する問題に対処するために、テーブルがロックされているかどうかをクエリする必要があることがよくあります。この記事では、Oracle ステートメントを使用してテーブルがロックされているかどうかをクエリする方法と、具体的なコード例を紹介します。テーブルがロックされているかどうかを確認するには、

フォーラムはインターネット上で最も一般的な Web サイト形式の 1 つで、ユーザーに情報を共有し、交換し、議論するためのプラットフォームを提供します。 Discuz は一般的に使用されているフォーラム プログラムであり、多くのウェブマスターはすでによく知っていると思います。 Discuz フォーラムの開発および管理中に、分析または処理のためにデータベース内のデータをクエリすることが必要になることがよくあります。この記事では、Discuz データベースの場所をクエリするためのヒントをいくつか紹介し、具体的なコード例を示します。まず、Discuz のデータベース構造を理解する必要があります。

BitTorrent Coin (BTT) の最新価格を確認する BTT は、ファイルの共有とダウンロードに対して BitTorrent ネットワーク ユーザーに報酬を与えるために使用される TRON ブロックチェーン上の暗号通貨です。 BTT の最新価格を確認する方法は次のとおりです。信頼できる価格チェック Web サイトまたはアプリを選択してください。一般的に使用される価格クエリ Web サイトには、次のものがあります。 CoinMarketCap: https://coinmarketcap.com/Coindesk: https://www.coindesk.com/Binance: https://www.binance.com/ Web サイトまたはアプリ BTT で検索します。 BTT の最新の価格を確認してください。注: 暗号通貨の価格

通神コインの最新価格を確認するにはどうすればよいですか?トークンは、ゲーム内アイテム、サービス、アセットの購入に使用できるデジタル通貨です。これは分散型であり、政府や金融機関によって管理されていないことを意味します。通神コインの取引はブロックチェーン上で行われます。ブロックチェーンは、通神コインのすべての取引情報を記録する分散台帳です。トークンの最新の価格を確認するには、次の手順を使用できます。 信頼できる価格確認 Web サイトまたはアプリを選択します。一般的に使用される価格クエリ Web サイトには、次のものがあります。 CoinMarketCap: https://coinmarketcap.com/Coindesk: https://www.coindesk.com/ Binance: https://www.bin
