欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Yii框架關(guān)聯(lián)查詢with用法分析

 更新時(shí)間:2014年12月02日 09:01:48   投稿:shichen2014  
這篇文章主要介紹了Yii框架關(guān)聯(lián)查詢with用法,以實(shí)例形式較為詳細(xì)的分析了yii支持的四種類型關(guān)系的具體用法,是使用yii框架進(jìn)行關(guān)聯(lián)查詢時(shí)非常實(shí)用的技巧,需要的朋友可以參考下

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

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

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

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

BELONGS_TO(屬于): 如果表 A 和 B 之間的關(guān)系是一對(duì)多,則 表 B 屬于 表 A (例如 Post 屬于 User);
HAS_MANY(有多個(gè)): 如果表 A 和 B 之間的關(guān)系是一對(duì)多,則 A 有多個(gè) B (例如 User 有多個(gè) Post);
HAS_ONE(有一個(gè)): 這是 HAS_MANY 的一個(gè)特例,A 最多有一個(gè) B (例如 User 最多有一個(gè) Profile);
MANY_MANY: 這個(gè)對(duì)應(yīng)于數(shù)據(jù)庫中的 多對(duì)多 關(guān)系。 由于多數(shù) DBMS 不直接支持 多對(duì)多 關(guān)系,因此需要有一個(gè)關(guān)聯(lián)表將 多對(duì)多 關(guān)系分割為 一對(duì)多 關(guān)系。
 
菜鳥們看到這個(gè)真的能明白嗎?

初學(xué)的時(shí)候,個(gè)人表示頭暈至極,經(jīng)過反復(fù)的測(cè)試,我給大家非常直白的解釋一下。
現(xiàn)有用戶表user和博客表blog,博客是屬于某個(gè)用戶的,而用戶會(huì)發(fā)表多篇博客。
BELONGS_TO:
controller

復(fù)制代碼 代碼如下:
$blogs = $blog_model->with('b_user')->find();

model 這里的model指的是blog_model
復(fù)制代碼 代碼如下:
'b_user'=>array(self::BELONGS_TO, 'user', 'author')

適用范圍,查找博客的時(shí)候需要把博客的作者也查出來。
b_user中第二個(gè)參數(shù):子表的表名,第三個(gè)參數(shù),主表中用于存子表主鍵的字段(blog表中用于存user表主鍵的字段)。
 
HAS_ONE:
controller
復(fù)制代碼 代碼如下:
$user_blog = $user_model->with('u_blog')->find();

model 這里的的model指的是user_model
復(fù)制代碼 代碼如下:
'u_blog'=>array(self::HAS_ONE, 'blog', 'author')

測(cè)試一下,不僅僅查出了作者的信息,而且還查出了一篇該作者的博客。
u_blog中的第二個(gè)參數(shù):子表表名,第三個(gè)參數(shù),子表中用于存主表主鍵的字段(blog表中用于存user表主鍵的字段)。
 
HAS_MANY:
controller
復(fù)制代碼 代碼如下:
$user_blogs = $user_model->with('u_blogs')->find();

model 這里的的model指的是user_model
復(fù)制代碼 代碼如下:
'u_blogs'=>array(self::HAS_MANY, 'blog', 'author')

測(cè)試一下,不僅僅查出了作者的信息,也不僅僅查出了一篇該作者的博客,而且還查出了該作者其它的博客。
u_blogs中的第二個(gè)參數(shù):子表表名,第三個(gè)參數(shù),子表中用于存主表主鍵的字段(blog表中用于存user表主鍵的字段)。
 
MANY_TO_MANY:
這個(gè)東西啊,我還沒用過,貌似基本上也不會(huì)用到,待我測(cè)一下,再來續(xù)上。。。
 
至此,Yii with的最最基本用法說的差不多了,但是你就沒有啥疑問嗎?
如何指定要查詢的子表字段?
HAS_MANY中查出了該用戶的所有文章,如果我只想要查5篇呢?
……等你來提問。
那么,廢話不多說,解決第一個(gè)問題
復(fù)制代碼 代碼如下:
'u_blogs'=>array(self::HAS_MANY, 'blog', 'author','select'=>'gid,title,content')

這樣試試?
第二個(gè)問題
復(fù)制代碼 代碼如下:
'u_blogs'=>array(self::HAS_MANY, 'blog', 'author','select'=>'gid,title,content','condition'=>'u_blogs.gid=2')

搞定!
 
相信看過這些非常小白的講解后應(yīng)該恍然大悟了吧。此所謂萬事開頭難啊,剩下的東西相信你一看就懂了~~~
 
以下內(nèi)容來自Yii手冊(cè):
 
延遲加載時(shí)有一定的關(guān)系,下列選項(xiàng)可用:
'group': string, GROUP BY子句。 默認(rèn)值為空。 注意,列引用需要加入'relationName'前綴 。(例如: relationName.age)。此選項(xiàng)僅適用于HAS_MANY 和 MANY_MANY 關(guān)系。
'having': string, HAVING子句。 默認(rèn)值為空。 注意,列引用需要加入'relationName'前綴 。(例如: relationName.age)。此選項(xiàng)僅適用于HAS_MANY 和 MANY_MANY 關(guān)系。
'limit': 數(shù)據(jù)行的limit選擇。 這個(gè)選項(xiàng)不能應(yīng)用到BELONGS_TO。
'offset': 數(shù)據(jù)行的偏移量。 這個(gè)選項(xiàng)不能應(yīng)用到BELONGS_TO。
'through': 獲取相關(guān)的數(shù)據(jù)時(shí)將用作橋的模型的關(guān)系的名稱??梢栽O(shè)置僅為 HAS_ONE 和 HAS_MANY。此選項(xiàng)自版本 1.1.7 可用。

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

復(fù)制代碼 代碼如下:
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'),
);

希望本文所述對(duì)大家的yii框架程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • CI(CodeIgniter)框架視圖中加載視圖的方法

    CI(CodeIgniter)框架視圖中加載視圖的方法

    這篇文章主要介紹了CI(CodeIgniter)框架視圖中加載視圖的方法,結(jié)合實(shí)例形式分析了CodeIgniter框架視圖加載相關(guān)操作技巧,需要的朋友可以參考下
    2017-03-03
  • php float不四舍五入截取浮點(diǎn)型字符串方法總結(jié)

    php float不四舍五入截取浮點(diǎn)型字符串方法總結(jié)

    在php中截取浮點(diǎn)型大致有以下幾種方法。需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-10-10
  • PHP+Ajax 網(wǎng)站SEO查詢工具 提供代碼

    PHP+Ajax 網(wǎng)站SEO查詢工具 提供代碼

    PHP+Ajax 網(wǎng)站SEO查詢工具 提供代碼...
    2007-03-03
  • php中刪除、清空session的方式總結(jié)

    php中刪除、清空session的方式總結(jié)

    php中刪除session的方式有很多種,本篇文章主要給大家介紹三種清空session的方式,感興趣的朋友跟著小編一起學(xué)習(xí)吧
    2015-10-10
  • php實(shí)現(xiàn)rc4加密算法代碼

    php實(shí)現(xiàn)rc4加密算法代碼

    此算法的解密方法是重新加密一次,便可還原,需要的朋友可以參考下
    2012-04-04
  • 如何使用php生成zip壓縮包

    如何使用php生成zip壓縮包

    這篇文章主要介紹了如何使用php生成zip壓縮包,對(duì)壓縮感興趣的同學(xué),可以實(shí)驗(yàn)一下
    2021-04-04
  • Laravel實(shí)現(xiàn)用戶多字段認(rèn)證的解決方法

    Laravel實(shí)現(xiàn)用戶多字段認(rèn)證的解決方法

    最近在工作中遇到一個(gè)問題,需要多字段的驗(yàn)證,通過查找相關(guān)資料終于解決了,下面這篇文章主要給大家介紹了關(guān)于Laravel如何實(shí)現(xiàn)用戶多字段認(rèn)證的解決方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • ThinkPHP5.0框架實(shí)現(xiàn)切換數(shù)據(jù)庫的方法分析

    ThinkPHP5.0框架實(shí)現(xiàn)切換數(shù)據(jù)庫的方法分析

    這篇文章主要介紹了ThinkPHP5.0框架實(shí)現(xiàn)切換數(shù)據(jù)庫的方法,結(jié)合實(shí)例形式分析了thinkPHP5.0數(shù)據(jù)庫的配置與動(dòng)態(tài)連接相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • Laravel相關(guān)的一些故障解決

    Laravel相關(guān)的一些故障解決

    這篇文章主要給大家介紹了關(guān)于Laravel相關(guān)的一些故障的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Laravel具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • thinkPHP商城公告功能開發(fā)問題分析

    thinkPHP商城公告功能開發(fā)問題分析

    這篇文章主要介紹了thinkPHP商城公告功能開發(fā)問題,結(jié)合實(shí)例形式分析了基于thinkPHP實(shí)現(xiàn)商城公告功能所涉及的ajax交互及數(shù)據(jù)庫操作相關(guān)技巧,需要的朋友可以參考下
    2016-12-12

最新評(píng)論