真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

thinkphp關(guān)聯(lián)模型的用法

這篇文章主要介紹thinkphp關(guān)聯(lián)模型的用法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)是專業(yè)的通江網(wǎng)站建設(shè)公司,通江接單;提供網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行通江網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

定義一對(duì)一關(guān)聯(lián)

這里假設(shè)你已經(jīng)把thinkphp5的環(huán)境都配置好了,數(shù)據(jù)庫(kù)也連接OK了。想通過(guò)模型把兩張表關(guān)聯(lián)起來(lái)然后在通過(guò)控制器一調(diào)用就可以得到兩張表的信息。

現(xiàn)在我準(zhǔn)備了兩張表,一張管理員表pwn_admin一張管理員信息表pwn_admin_message 為了能更方便的理解我把兩張表的表結(jié)構(gòu)也貼出來(lái)了。

下面是兩張表的表結(jié)構(gòu)信息:

CREATE TABLE `pwn_admin` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `user` varchar(30) NOT NULL DEFAULT '',
  `password` varchar(50) NOT NULL DEFAULT '',
  `name` varchar(50) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=28 DEFAULT CHARSET=utf8;
CREATE TABLE `pwn_admin_message` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `email` varchar(30) NOT NULL DEFAULT '',
  `mobile` varchar(50) NOT NULL DEFAULT '',
  `aid` int(11) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

建模型文件

接下來(lái)是新建對(duì)應(yīng)兩張數(shù)據(jù)表的模型類文件。在模塊下新建一個(gè)model目錄然后新建兩個(gè)文件并按對(duì)應(yīng)的表命名:

thinkphp關(guān)聯(lián)模型的用法

模型命名

模型類的命名規(guī)則是除去表前綴的數(shù)據(jù)表名稱,采用駝峰法命名,并且首字母大寫,比如上面兩張表的表前綴是pwn_ 在模型名稱里就需要省略掉。所以pwn_admin 表的模型類名就是 Admin ,pwn_admin_message 的模型類名就是AdminMessage

hasOne方法的參數(shù)包括:

hasOne(‘關(guān)聯(lián)模型名’,’外鍵名’,’主鍵名’,[‘模型別名定義’],’join類型’);

默認(rèn)的join類型為INNER

模型定義

Admin模型對(duì)應(yīng)的是 pwn_admin 表

hasOne('AdminMessage','aid','id')->field('id,coltype,auth,name,intro,xuhao,pid,pname');
    }
}


?>

在Admin模型定義好關(guān)聯(lián)的方法之后在AdminMessage模型里可以不用寫任何對(duì)應(yīng)的方法,但是必須最少要有一個(gè)對(duì)應(yīng)pwn_admin_message 表的空模型。

相應(yīng)的如果在這個(gè)模型里寫了

有一點(diǎn)需要注意的是,關(guān)聯(lián)方法的命名規(guī)范是駝峰法,而關(guān)聯(lián)屬性則一般是小寫+下劃線的方式,系統(tǒng)在獲取的時(shí)候會(huì)自動(dòng)轉(zhuǎn)換對(duì)應(yīng),讀取user_profile關(guān)聯(lián)屬性則對(duì)應(yīng)的關(guān)聯(lián)方法應(yīng)該是userProfile。

控制器調(diào)用

在控制器想要使用關(guān)聯(lián)模型就需要先引入模型類,比如我上面是在admin模型里定義了關(guān)聯(lián)的方法,就需要把a(bǔ)dmin模型引入控制器。

use app\index\model\Admin
find()->toArray());
    }
    ?>

下面就可以訪問(wèn)以下瀏覽器看看結(jié)果了:

thinkphp關(guān)聯(lián)模型的用法

如果你的結(jié)果是這樣只有admin管理員表的數(shù)據(jù),別著急這是正常的。如果想要獲取到關(guān)聯(lián)表pwn_admin_message 的數(shù)據(jù)就需要先調(diào)用剛才定義的 AdminMessage() 模型方法,然后在指向find()方法取出數(shù)據(jù)。

注意:

這個(gè)find()方法是不可以省略掉的哦,我就是因?yàn)檫@個(gè)方法沒(méi)加上所以一直不能取出完整的管理員信息。

AdminMessage->find()->toArray();  
        var_dump($admin);
        }
    }
  ?>

得到的結(jié)果是

thinkphp關(guān)聯(lián)模型的用法

因?yàn)槭菧y(cè)試為了方便我就不用數(shù)字號(hào)碼了,直接用文字代號(hào)這樣比較直觀明了。

hasWhere()方法:

如果要根據(jù)關(guān)聯(lián)表的查詢條件查詢當(dāng)前模型的數(shù)據(jù),可以使用hasWhere方法,例如:

'guanliB@ggg.com']);
        $admin=$admin->find()->toArray();
        var_dump($admin);
    }
   }
    ?>

輸出結(jié)果:

thinkphp關(guān)聯(lián)模型的用法

定義一對(duì)多關(guān)聯(lián)

一對(duì)多的關(guān)聯(lián)和一對(duì)一的關(guān)聯(lián)的使用差不多都是一樣的,區(qū)別是方法名不同。一對(duì)多在模型里使用的方法名是 hasMany 。hasMany 和 hasOne 的使用方法和參數(shù)基本相同。

hasMany參數(shù)是:

hasMany(‘關(guān)聯(lián)模型名’,’外鍵名’,’主鍵名’,[‘模型別名定義’]);

還是以上面兩張表為例,但是為了配合一對(duì)多關(guān)聯(lián) pwn_admin_message 的內(nèi)容還有aid 字段需要稍微修改一下。改成一個(gè)管理員有多個(gè)手機(jī)號(hào),有多個(gè)email郵箱。

為了方便理解我把兩張表的數(shù)據(jù)內(nèi)容截圖上來(lái)。

下圖是 pwn_admin_message 表的內(nèi)容:

thinkphp關(guān)聯(lián)模型的用法

下圖是 pwn_admin 表的內(nèi)容:

thinkphp關(guān)聯(lián)模型的用法

有幾個(gè)管理員沒(méi)有數(shù)據(jù),不過(guò)沒(méi)關(guān)系足夠測(cè)試就可以了。好了廢話不多說(shuō),開始進(jìn)入正題。

相信大家一看就知道下面這個(gè)是admin模型的內(nèi)容,對(duì)應(yīng)的是pwd_admin 表

 hasMany('AdminMessage','aid','id');
    }
}

而這下面這個(gè)是 AdminMessage 對(duì)應(yīng)的是哪張表我就不說(shuō)了。這和一對(duì)一關(guān)聯(lián)一樣也可以是個(gè)空模型

belongsTo('Admin','aid','id');
    }
    */
}
?>

控制器調(diào)用,這回就有點(diǎn)不一樣了。因?yàn)榉祷氐臄?shù)據(jù)是一個(gè)二維數(shù)組里面包含了多個(gè)對(duì)象所以需要把數(shù)組循環(huán)出來(lái)并把對(duì)象在轉(zhuǎn)為數(shù)組才能輸出

AdminMessage()->select();
        for($i=0;$itoArray());
        }
    }
}
?>

輸出結(jié)果:

thinkphp關(guān)聯(lián)模型的用法

還有兩個(gè)函數(shù)也順便說(shuō)一下了,一個(gè)是 hasWhere 還有一個(gè) has 這兩個(gè)都是根據(jù)關(guān)聯(lián)條件來(lái)查詢的,通俗點(diǎn)講就是根據(jù)關(guān)聯(lián)到 pwd_admin 表,的 pwn_admin_message 表字段的條件來(lái)查詢的。如果換過(guò)來(lái)用pwd_admin里的字段作為條件查詢的話就會(huì)報(bào)錯(cuò)。

1])->select();
     $list1=Admin::has('AdminMessage',['aid'=>2])->select();
    var_dump($list1[0]->toArray());
    }
   }

   ?>

這樣子關(guān)聯(lián)得出的結(jié)果是正常的:

thinkphp關(guān)聯(lián)模型的用法

如果按 pwd_admin 表的字段做為搜索條件就會(huì)報(bào)錯(cuò)。比如我用一個(gè) pwn_admin_message 沒(méi)有的字段,用user字段來(lái)做為條件查詢?cè)囋嚒?/p>

1])->select();
     $list1=Admin::has('AdminMessage',['user'=>'jiehechen123'])->select();
     var_dump($list1[0]->toArray());
    }
   }
  ?>

就會(huì)報(bào)出如下錯(cuò)誤:

thinkphp關(guān)聯(lián)模型的用法

以上是“thinkphp關(guān)聯(lián)模型的用法”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


新聞標(biāo)題:thinkphp關(guān)聯(lián)模型的用法
文章路徑:http://weahome.cn/article/jjipjp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部