日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php with语法,Yii框架关联查询with用法分析

發(fā)布時間:2024/7/19 php 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php with语法,Yii框架关联查询with用法分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文實例分析了Yii框架關(guān)聯(lián)查詢with用法。分享給大家供大家參考。具體方法如下:

Yii框架關(guān)聯(lián)查詢與mysql中的關(guān)聯(lián)查詢會有什么區(qū)別呢?這里小編就與各位來一起來看看吧。

Yii的關(guān)聯(lián)查詢確實是一個方便的東西,網(wǎng)上的資料也很多,但是大部分都是Ctrl+c,Ctrl+v,有些東西一直沒有人出來詳細的寫篇文章說明一下,在參考了網(wǎng)上很多資源以后,加上自己的的一些理解,寫下了這篇文章,給廣大初學者朋友們提供一點個人見解。

YII 支持四種類型的關(guān)系:

BELONGS_TO(屬于): 如果表 A 和 B 之間的關(guān)系是一對多,則 表 B 屬于 表 A (例如 Post 屬于 User);

HAS_MANY(有多個): 如果表 A 和 B 之間的關(guān)系是一對多,則 A 有多個 B (例如 User 有多個 Post);

HAS_ONE(有一個): 這是 HAS_MANY 的一個特例,A 最多有一個 B (例如 User 最多有一個 Profile);

MANY_MANY: 這個對應于數(shù)據(jù)庫中的 多對多 關(guān)系。 由于多數(shù) DBMS 不直接支持 多對多 關(guān)系,因此需要有一個關(guān)聯(lián)表將 多對多 關(guān)系分割為 一對多 關(guān)系。

菜鳥們看到這個真的能明白嗎?

初學的時候,個人表示頭暈至極,經(jīng)過反復的測試,我給大家非常直白的解釋一下。

現(xiàn)有用戶表user和博客表blog,博客是屬于某個用戶的,而用戶會發(fā)表多篇博客。

BELONGS_TO:controller

$blogs = $blog_model->with('b_user')->find();

model 這里的model指的是blog_model

'b_user'=>array(self::BELONGS_TO, 'user', 'author')

適用范圍,查找博客的時候需要把博客的作者也查出來。

b_user中第二個參數(shù):子表的表名,第三個參數(shù),主表中用于存子表主鍵的字段(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中的第二個參數(shù):子表表名,第三個參數(shù),子表中用于存主表主鍵的字段(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中的第二個參數(shù):子表表名,第三個參數(shù),子表中用于存主表主鍵的字段(blog表中用于存user表主鍵的字段)。

MANY_TO_MANY:這個東西啊,我還沒用過,貌似基本上也不會用到,待我測一下,再來續(xù)上。。。

至此,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')

搞定!

相信看過這些非常小白的講解后應該恍然大悟了吧。此所謂萬事開頭難啊,剩下的東西相信你一看就懂了~~~

以下內(nèi)容來自Yii手冊:

延遲加載時有一定的關(guān)系,下列選項可用:

'group': string, GROUP BY子句。 默認值為空。 注意,列引用需要加入'relationName'前綴 。(例如: relationName.age)。此選項僅適用于HAS_MANY 和 MANY_MANY 關(guān)系。

'having': string, HAVING子句。 默認值為空。 注意,列引用需要加入'relationName'前綴 。(例如: relationName.age)。此選項僅適用于HAS_MANY 和 MANY_MANY 關(guān)系。

'limit': 數(shù)據(jù)行的limit選擇。 這個選項不能應用到BELONGS_TO。

'offset': 數(shù)據(jù)行的偏移量。 這個選項不能應用到BELONGS_TO。

'through': 獲取相關(guān)的數(shù)據(jù)時將用作橋的模型的關(guān)系的名稱。可以設置僅為 HAS_ONE 和 HAS_MANY。此選項自版本 1.1.7 可用。

以下是一個例子,為 'Post' 活動記錄類相關(guān)對象的一個示例:

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框架程序設計有所幫助。

總結(jié)

以上是生活随笔為你收集整理的php with语法,Yii框架关联查询with用法分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。