2
我有User
,Role
和User_Role
表,其中包含User和Role表之間的多對多關係。Laravel更新多對多外鍵記錄
class User extends Model {
public function roles {
return $this->belongsToMany('App\Role');
}
}
class Role extends Model {
public function users {
return $this->belongsToMany('App\User');
}
}
User
- id
- other_columns
Role
- id
- other_columns
User_Role
- id
- user_id
- role_id
- other_columns
User_Role
可以有不同的Role_User.id
多個相同的記錄。
如何更新User
的作用而不更改或刪除User_Role
表的記錄?換句話說,如何更新User_Role.role_id
而不更改或刪除User_Role.id
?
我曾嘗試:
$user->roles()->updateExistingPivot($userRoleId, ['role_id' => $newRoleId]);
和
$user->roles()->sync($userRoleId, ['id' => $userRoleId, 'role_id' => $newRoleId, 'user_id' => $userId]);
但他們沒有工作。
更新
該代碼的工作,但它也改變了相同的其他記錄。
$user->roles()->updateExistingPivot($oldRoleId, ['role_id' => $newRoleId]);
我試圖篩選首先如果您使用多於一對一模一樣user_id
和role_id
你
$user->roles()->wherePivot('id', $userRoleId)->updateExistingPivot($oldRoleId, ['role_id' => $newRoleId]);
遺憾的是,不能正常工作。 –
哦,你用'updateExistingPivot()'更新了你的問題。我想知道你的例子中'$ userRoleId'是什麼?這是一箇舊的角色ID? –
它是User_Role表的主鍵。 –