【tp5】關(guān)聯(lián)模型的使用方式

做項(xiàng)目時(shí)總時(shí)喜歡使用db函數(shù)快速操作數(shù)據(jù)庫娱颊,但是這樣子會(huì)導(dǎo)致一個(gè)控制器內(nèi)包含多至數(shù)據(jù)庫所有表的操作,第一不大美觀凯砍,第二不利于代碼的反復(fù)使用箱硕,違背了低耦合高內(nèi)聚(是不是這樣子?悟衩?剧罩?)的原則!座泳!
所以我決定又撿起了許久沒啃的model關(guān)聯(lián)
不逼一下自己怎么能知道放棄是多么舒服呢惠昔!
不對(duì)幕与。。舰罚。纽门。怎么能知道關(guān)聯(lián)是多么好用呢

  • 首先,學(xué)習(xí)關(guān)聯(lián)能讓自己對(duì)tp多一份熟悉
  • 第二营罢,減少了控制器中對(duì)數(shù)據(jù)庫的操作赏陵,轉(zhuǎn)為通過model層對(duì)數(shù)據(jù)庫操作,符合MVC思想
  • 第三饲漾,沒有第三蝙搔,開始記錄吧。考传。吃型。
以下是本人對(duì)tp5文檔的理解總結(jié),絕非照搬照抄

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

何為一對(duì)一僚楞?舉個(gè)栗子
有個(gè)用戶表user勤晚,里面一用戶張三

id: 1
nickname: 張三
create_time: 2021-02-08

有個(gè)用戶料表profile,有且只有張三的一條用戶資料泉褐,修改也只是在這條數(shù)據(jù)上修改

id: 1,
user_id: 1,
mobile: 13345601201,
avatar: '/imgs/user/avatar.png'
so赐写,就可以在model中操作了
  1. 創(chuàng)建model
php think make:model user
php think make:model profile

生成對(duì)應(yīng)model
在模型user中,設(shè)置對(duì)應(yīng)資料的關(guān)聯(lián)關(guān)系膜赃,因?yàn)槭且粚?duì)一關(guān)系挺邀,所以用hasOne來關(guān)聯(lián),然后在模型profile中設(shè)置相對(duì)關(guān)聯(lián)

User.php
public function profile() {
    return $this->hasOne('Profile');
    默認(rèn)關(guān)聯(lián)id為對(duì)應(yīng)model的名稱跳座,例當(dāng)前profile對(duì)應(yīng)外鍵為user_id端铛,若不為默認(rèn)外鍵,則在第二個(gè)參數(shù)中指定
    return $this->hasOne('Profile', 'member_id');
}
Profile.php
public function user() {
    return $this->belongsTo('Profile');
    規(guī)則同上
}

在隨便一個(gè)不知名的控制器中敲入

use app\model\User;

$user = User::get(1);
或者使用預(yù)載入的方式
$user = User::with('profile')->select([1]);
dump($user->profile); 

就能打印出profile中對(duì)應(yīng)張三的資料了

  1. 對(duì)對(duì)應(yīng)關(guān)聯(lián)模型的數(shù)據(jù)操作
$user = User::get(1);
修改
$user->profile->mobile = 13333333333;
$user->profile->save();
新增
$user->profile->save(['mobile' => 13333333333]);
那有個(gè)問題疲眷,如果一對(duì)一關(guān)聯(lián)使用到多個(gè)的數(shù)據(jù)類型上會(huì)怎樣禾蚕?(不是我杠精,要秉承科學(xué)嚴(yán)謹(jǐn)?shù)膽B(tài)度)例如

一個(gè)用戶可以有多個(gè)地址狂丝,那會(huì)打印出什么夕膀?我試了一下
他會(huì)打印出最新的一條,不是按id來排列

待更新美侦。。魂奥。菠剩。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市耻煤,隨后出現(xiàn)的幾起案子具壮,更是在濱河造成了極大的恐慌准颓,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棺妓,死亡現(xiàn)場離奇詭異攘已,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)怜跑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門样勃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人性芬,你說我怎么就攤上這事峡眶。” “怎么了植锉?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵辫樱,是天一觀的道長。 經(jīng)常有香客問我俊庇,道長狮暑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任辉饱,我火速辦了婚禮搬男,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鞋囊。我一直安慰自己止后,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布溜腐。 她就那樣靜靜地躺著译株,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挺益。 梳的紋絲不亂的頭發(fā)上歉糜,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音望众,去河邊找鬼匪补。 笑死,一個(gè)胖子當(dāng)著我的面吹牛烂翰,可吹牛的內(nèi)容都是我干的夯缺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼甘耿,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼踊兜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起佳恬,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤捏境,失蹤者是張志新(化名)和其女友劉穎于游,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體垫言,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贰剥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了筷频。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚌成。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖截驮,靈堂內(nèi)的尸體忽然破棺而出笑陈,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站沈堡,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蓬网。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一鹉勒、第九天 我趴在偏房一處隱蔽的房頂上張望帆锋。 院中可真熱鬧,春花似錦禽额、人聲如沸锯厢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽实辑。三九已至,卻和暖如春藻丢,著一層夾襖步出監(jiān)牢的瞬間剪撬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國打工悠反, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留残黑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓斋否,卻偏偏與公主長得像梨水,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子茵臭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 現(xiàn)在我們?cè)O(shè)計(jì)了一個(gè)如下的數(shù)據(jù)庫表冰木,需要設(shè)計(jì)出 tp5 相應(yīng)的關(guān)聯(lián)模型,并能進(jìn)行相應(yīng)的查詢。 我們先來分析一下各個(gè)表...
    風(fēng)聲233閱讀 15,085評(píng)論 3 7
  • 前言: 大家在使用tp5的時(shí)候,操作數(shù)據(jù)庫的方法有很多,你使用哪一種呢?我個(gè)人是比較推薦使用ORM的方式來操作數(shù)據(jù)...
    祥哥去哪里閱讀 1,596評(píng)論 0 2
  • 一踊沸、關(guān)聯(lián)模型 在關(guān)系型數(shù)據(jù)庫中,表之間有一對(duì)一社证、一對(duì)多逼龟、多對(duì)多的關(guān)系。在 TP5 中追葡,實(shí)現(xiàn)了ORM (Object...
    中v中閱讀 880評(píng)論 0 1
  • 設(shè)計(jì)模式是什么腺律? 你知道哪些設(shè)計(jì)模式,并簡要敘述宜肉? 設(shè)計(jì)模式是一種編碼經(jīng)驗(yàn)匀钧,就是用比較成熟的邏輯去處理某一種類型的...
    卑微的戲子閱讀 624評(píng)論 0 1
  • 設(shè)計(jì)模式是什么? 你知道哪些設(shè)計(jì)模式谬返,并簡要敘述之斯? 設(shè)計(jì)模式是一種編碼經(jīng)驗(yàn),就是用比較成熟的邏輯去處理某一種類型的...
    iOS菜鳥大大閱讀 709評(píng)論 0 1