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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

ThinkPHP5有关模型hasOne、hasMany、belongsTo详解

發(fā)布時(shí)間:2024/9/19 php 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ThinkPHP5有关模型hasOne、hasMany、belongsTo详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

hinkPHP5有關(guān)聯(lián)模型的操作,但有部分初學(xué)者對(duì)數(shù)據(jù)表中常見的幾種表與表的關(guān)系還存在著問題,所以使用不好關(guān)聯(lián)查詢。

這里將hasOne、hasMany、belongsTo進(jìn)行一個(gè)詳細(xì)舉例說明。

首先,這3個(gè)的大致中文意思:

hasOne:有一個(gè),加上主謂語應(yīng)該是 ,A 有一個(gè) B
hasMany:有很多,A 有很多 B
belongsTo:屬于, A 屬于 B


這里我們準(zhǔn)備3張表來理解他們的關(guān)系:
user_group 用戶分組表:id、title
user 用戶表:id、user_group_id、username、password
profile 用戶信息表:id、user_id、nickname、sex


1、user表需要關(guān)聯(lián)user_group表,表示每一個(gè) 用戶 需要知道該用戶是 哪個(gè)用戶分組的;
2、profile表 需要關(guān)聯(lián) 用戶表,表示該用戶信息數(shù)據(jù) 是哪個(gè)用戶的信息;

我們知道一個(gè)用戶組下面可以有很多用戶,所以:user_group hasMany user;
一個(gè)用戶 屬于 一個(gè)用戶組,所以:user belongsTo user_group;

同樣是user_group和user表,但我們出發(fā)點(diǎn)不同,關(guān)系也就不一樣了。


每個(gè)用戶都應(yīng)該有唯一一條用戶信息數(shù)據(jù),所以:user hasOne profile;
一條用戶信息 屬于 一個(gè)用戶,所以:profile belongsTo user

綜上:

在User模型中,我們可以定義關(guān)聯(lián):

function user_group(){return $this->belongsTo('UserGroup');}function profile(){return $this->hasOne('Profile');}

我們?cè)诓樵冎?#xff1a;
$user = model('User')->find();
$user = $user->user_group; //這樣user中就可以包含當(dāng)前數(shù)據(jù)對(duì)應(yīng)的user_grou數(shù)據(jù)了
$user = $user->profile;//這樣user中就可以包含當(dāng)前數(shù)據(jù)對(duì)應(yīng)的profile數(shù)據(jù)了


在UserGroup模型中,我們可以定義關(guān)聯(lián):

function user(){return $this->hasMany('User');}

在Profile模型中,我們可以定義關(guān)聯(lián):

function user(){return $this->belongsTo('User');}

注:定義關(guān)聯(lián)function的方法名可以隨意定義,一般為表名或模型名;我們定義的時(shí)候是function,但獲取時(shí)理解為獲取屬性,所以不加();
很多人理解是我定義了一個(gè)profile的方法,所以應(yīng)該$user->profile(),這里要特別注意下。

這樣我們?cè)诓樵儠r(shí),就方便了,不需要使用大量的join。

轉(zhuǎn)自:https://www.thinkphp.cn/extend/1056.html?__cf_chl_jschl_tk__=34fe3145b6ac2f27d039e58e43f98921dcd35d39-1613959542-0-AR2SNltufFsyTWfGswLUZeDXeHcG-XD_cprzDR7uyU95dnIZBvKd-0UTEPpVFRIiKDKvv4qSvf6sNA-JvBoyOc2H5kOGpLj0GJDcm_plNLuc_sDJJrOcRWBLqqGRQO2xE7WClKiU3G2xM4eS0VMo39wq56tKKWE5RYh7M0-8jTPyfDVgjO4eHB_GFrx9mra6r0C2VyGmC1kBqjb5Z_uk-wLmqzCZ9pTsYdv5FD96xBQ_2WA9fuChtEU8Tj2-zzpghWBWMYc-VQAZ-XH0baiXYrQUlyMU6W2PADzftHVNStmBl2g5R9z6x3_ZNQjlsypZF_kQzgEaSdtBZajjGIUJw-8

總結(jié)

以上是生活随笔為你收集整理的ThinkPHP5有关模型hasOne、hasMany、belongsTo详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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