Laravel 8 附加 / 分離

2021-07-19 11:41 更新

Eloquent 也提供了一些額外的輔助方法,使相關(guān)模型的使用更加方便。例如,我們假設(shè)一個(gè)用戶可以擁有多個(gè)角色,并且每個(gè)角色都可以被多個(gè)用戶共享。給某個(gè)用戶附加一個(gè)角色是通過(guò)向中間表插入一條記錄實(shí)現(xiàn)的,可以使用 attach 方法完成該操作:

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

$user->roles()->attach($roleId); 

在將關(guān)系附加到模型時(shí),還可以傳遞一組要插入到中間表中的附加數(shù)據(jù):

$user->roles()->attach($roleId, ['expires' => $expires]); 

當(dāng)然,有時(shí)也需要移除用戶的角色??梢允褂?detach 移除多對(duì)多關(guān)聯(lián)記錄。detach 方法將會(huì)移除中間表對(duì)應(yīng)的記錄;但是這兩個(gè)模型都將會(huì)保留在數(shù)據(jù)庫(kù)中:

// 移除用戶的一個(gè)角色...
$user->roles()->detach($roleId);

// 移除用戶的所有角色...
$user->roles()->detach(); 

為了方便起見,attachdetach 也允許傳遞一個(gè) ID 數(shù)組:

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

$user->roles()->detach([1, 2, 3]);

$user->roles()->attach([
    1 => ['expires' => $expires],
    2 => ['expires' => $expires],
]); 
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)