Laravle eloquent 多對多模型關聯(lián)實例詳解
什么是多對多關聯(lián)?
Eloquent中一個模型就是一個數(shù)據(jù)表,數(shù)據(jù)表之間通常會有關聯(lián),多對多關聯(lián)就是2個表之間相互有很多關聯(lián),比如說:一個表存放了用戶數(shù)據(jù),
另一個表存放了文章的信息,
一個用戶可以收藏多篇文章,一篇文章也可以被多個用戶收藏,這就是 多對多關聯(lián) 。
怎么用多對多關聯(lián)?
使用Eloquent的多對多關聯(lián)可以很便捷的互相查詢、修改、增加、刪除兩個模型之間的關聯(lián)。
多對多關聯(lián)除了相互關聯(lián)的兩張表之外還需要一張記錄關聯(lián)的表(pivot表),一般記錄兩個模型的的ID就行
舉個栗子
我們數(shù)據(jù)庫里的三張表是user
articles
article_collections
我們需要創(chuàng)建2個模型,中間表模型不是必須的
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Entity{
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Articles extends Entity{
}
通過在模型里寫一個方法調(diào)用belongToMany()方法并返回結(jié)果來獲取數(shù)據(jù)。
belongToMany()里傳入的第一個參數(shù)是對應表,第二個參數(shù)是中間表的表名,第三個參數(shù)是當前模型在中間表的鍵名,第四個參數(shù)是關聯(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')
}
}
這樣我們就可以通過article方法得到user收藏的文章了
$articles = User::find(1)->articles()->get();
用where()、orderBy()等方法對查詢的數(shù)據(jù)添加條件
用attach()方法添加關聯(lián),比如讓id為1用戶收藏id為1的article
$user = User::find(1); $user->articles()->attach(1)
用detach()方法去除關聯(lián),方法和attach()一樣。
OK 以上就是Laravel eloquent 多對多關聯(lián)的一些基礎知識了。
總結(jié)
以上所述是小編給大家介紹的Laravle eloquent 多對多模型關聯(lián)實例詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
使用php偽造referer的方法 利用referer防止圖片盜鏈
當瀏覽器向web服務器發(fā)送請求的時候,一般會帶上Referer,告訴服務器我是從哪個頁面鏈接過來的,服務器籍此可以獲得一些信息用于處理,不過這個Referer是可以偽造,下面看一個示例,大家就明白了2014-01-01
destoon實現(xiàn)公司新聞詳細頁添加評論功能的方法
這篇文章主要介紹了destoon實現(xiàn)公司新聞詳細頁添加評論功能的方法,需要的朋友可以參考下2014-07-07
PHP設計模式之中介者模式(Mediator Pattern)入門與應用案例詳解
這篇文章主要介紹了PHP設計模式之中介者模式(Mediator Pattern),結(jié)合實例形式詳細分析了PHP中介者模式的基本概念、原理、應用案例與相關操作注意事項,需要的朋友可以參考下2019-12-12
Laravel 實現(xiàn)在Blade模版中使用全局變量代替路徑的例子
今天小編就為大家分享一篇Laravel 實現(xiàn)在Blade模版中使用全局變量代替路徑的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10

