php - Laravel Update Many-to-Many Foreign Key Record -
i have user, role, , user_role table many-to-many relationship between user , role table.
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 can have multiple same record different role_user.id.
how update user's role without changing or deleting record of user_role table? or in other word how update user_role.role_id without changing or deleting user_role.id?
i have tried:
$user->roles()->updateexistingpivot($userroleid, ['role_id' => $newroleid]); and
$user->roles()->sync($userroleid, ['id' => $userroleid, 'role_id' => $newroleid, 'user_id' => $userid]); but don't work.
update
this code work, changes same other record.
$user->roles()->updateexistingpivot($oldroleid, ['role_id' => $newroleid]); and have tried filter first
$user->roles()->wherepivot('id', $userroleid)->updateexistingpivot($oldroleid, ['role_id' => $newroleid]);
you can try updateexistingpivot()
$user->roles()->updateexistingpivot($roleid, ['role_id' => $newroleid]); if you're using more 1 pair of same user_id , role_id , want update 1 row, try use newpivotstatement():
$user->roles()->newpivotstatement()->where('id', $userroleid)->update(['role_id' => $newroleid]); and solution @yosua lijanto binar:
$user->roles()->wherepivot('id', $userroleid)->updateexistingpivot($oldroleid, ['role_id' => $newroleid]);
Comments
Post a Comment