Laravle eloquent 多對(duì)多模型關(guān)聯(lián)實(shí)例詳解
什么是多對(duì)多關(guān)聯(lián)?
Eloquent中一個(gè)模型就是一個(gè)數(shù)據(jù)表,數(shù)據(jù)表之間通常會(huì)有關(guān)聯(lián),多對(duì)多關(guān)聯(lián)就是2個(gè)表之間相互有很多關(guān)聯(lián),比如說(shuō):一個(gè)表存放了用戶(hù)數(shù)據(jù),
另一個(gè)表存放了文章的信息,
一個(gè)用戶(hù)可以收藏多篇文章,一篇文章也可以被多個(gè)用戶(hù)收藏,這就是 多對(duì)多關(guān)聯(lián) 。
怎么用多對(duì)多關(guān)聯(lián)?
使用Eloquent的多對(duì)多關(guān)聯(lián)可以很便捷的互相查詢(xún)、修改、增加、刪除兩個(gè)模型之間的關(guān)聯(lián)。
多對(duì)多關(guān)聯(lián)除了相互關(guān)聯(lián)的兩張表之外還需要一張記錄關(guān)聯(lián)的表(pivot表),一般記錄兩個(gè)模型的的ID就行
舉個(gè)栗子
我們數(shù)據(jù)庫(kù)里的三張表是user
articles
article_collections
我們需要?jiǎng)?chuàng)建2個(gè)模型,中間表模型不是必須的
<?php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Entity{ } <?php namespace App; use Illuminate\Database\Eloquent\Model; class Articles extends Entity{ }
通過(guò)在模型里寫(xiě)一個(gè)方法調(diào)用belongToMany()方法并返回結(jié)果來(lái)獲取數(shù)據(jù)。
belongToMany()里傳入的第一個(gè)參數(shù)是對(duì)應(yīng)表,第二個(gè)參數(shù)是中間表的表名,第三個(gè)參數(shù)是當(dāng)前模型在中間表的鍵名,第四個(gè)參數(shù)是關(guān)聯(lián)模型在中間表的鍵名。
<?php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Entity{ public function articles() { return $this->belongToMany(Articles::class, 'article_collections', 'user_id', 'article_id') } }
這樣我們就可以通過(guò)article方法得到user收藏的文章了
$articles = User::find(1)->articles()->get();
用where()、orderBy()等方法對(duì)查詢(xún)的數(shù)據(jù)添加條件
用attach()方法添加關(guān)聯(lián),比如讓id為1用戶(hù)收藏id為1的article
$user = User::find(1); $user->articles()->attach(1)
用detach()方法去除關(guān)聯(lián),方法和attach()一樣。
OK 以上就是Laravel eloquent 多對(duì)多關(guān)聯(lián)的一些基礎(chǔ)知識(shí)了。
總結(jié)
以上所述是小編給大家介紹的Laravle eloquent 多對(duì)多模型關(guān)聯(lián)實(shí)例詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
ecshop實(shí)現(xiàn)smtp發(fā)送郵件
這篇文章主要介紹了ecshop實(shí)現(xiàn)smtp發(fā)送郵件,需要的朋友可以參考下2015-02-02Laravel框架定時(shí)任務(wù)2種實(shí)現(xiàn)方式示例
這篇文章主要介紹了Laravel框架定時(shí)任務(wù)2種實(shí)現(xiàn)方式,結(jié)合實(shí)例形式較為詳細(xì)的分析了Laravel框架定時(shí)任務(wù)相關(guān)實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下2018-12-12解決laravel5中auth用戶(hù)登錄其他頁(yè)面獲取不到登錄信息的問(wèn)題
今天小編就為大家分享一篇解決laravel5中auth用戶(hù)登錄其他頁(yè)面獲取不到登錄信息的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10cakephp常見(jiàn)知識(shí)點(diǎn)匯總
這篇文章主要介紹了cakephp常見(jiàn)知識(shí)點(diǎn),匯總整理了cakephp的模板、數(shù)據(jù)庫(kù)、日志、表單等相關(guān)操作技巧,需要的朋友可以參考下2017-02-02國(guó)產(chǎn)PHP開(kāi)發(fā)框架myqee新手快速入門(mén)教程
這篇文章主要介紹了國(guó)產(chǎn)PHP開(kāi)發(fā)框架myqee新手快速入門(mén)教程,myqee中文名稱(chēng)邁啟PHP框架,有比較多的高級(jí)開(kāi)發(fā)特性,需要的朋友可以參考下2014-07-07Yii2增刪改查之查詢(xún) where參數(shù)詳細(xì)介紹
這篇文章主要介紹了Yii2增刪改查之查詢(xún) where參數(shù)詳細(xì)介紹的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08