Laravel 8 獲取中間表字段

2021-07-19 11:34 更新

就如你剛才所了解的一樣,多對多的關聯(lián)關系需要一個中間表來提供支持, Eloquent 提供了一些有用的方法來和這張表進行交互。例如,假設我們的 User 對象關聯(lián)了多個 Role 對象。在獲得這些關聯(lián)對象后,可以使用模型的 pivot 屬性訪問中間表的屬性:

$user = App\Models\User::find(1);

foreach ($user->roles as $role) {
    echo $role->pivot->created_at;
} 

需要注意的是,我們獲取的每個 Role 模型對象,都會被自動賦予 pivot 屬性,它代表中間表的一個模型對象,并且可以像其他的 Eloquent 模型一樣使用。

默認情況下,pivot 對象只包含兩個關聯(lián)模型的主鍵,如果你的中間表里還有其他額外字段,你必須在定義關聯(lián)時明確指出:

return $this->belongsToMany('App\Models\Role')->withPivot('column1', 'column2'); 

如果你想讓中間表自動維護 created_atupdated_at 時間戳,那么在定義關聯(lián)時附加上 withTimestamps 方法即可:

return $this->belongsToMany('App\Models\Role')->withTimestamps(); 

注意:在數(shù)據透視表上使用時間戳時,該表必須同時具有 created_atupdated_at 時間戳字段。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號