猿问

删除模型时,请分离数据透视表中模型的每个记录

想象一下我有UserRole模特。现在,我正在从数据库中删除多个用户。例如,我删除了ID为1、2、3和4的用户。现在,我想从数据透视表中删除其中user_id = 1、2、3或4的所有内容。最佳方法是什么?我的意思是laravel实现。


料青山看我应如是
浏览 119回答 3
3回答

天涯尽头无女友

如果用户和角色之间存在许多关系,则可以按以下方式解决您的问题这是示例代码User.phpclass User extends Authenticatable implements CanResetPassword{  protected $table = "users"; public function roles(){  return $this->belongsToMany(Role::class,'role_user'); }}Role.phpclass Role extends Model{  protected $table = "roles"; public function users(){  return $this->belongsToMany(User::class,'role_user'); }}在您的控制器上,您可以执行此操作class AnyTestController extends Controller{  public function test(){   //Suppose your user id is 1 then delete user from pivot table    $user = User::find(1);   $user->roles()->detach();   $user->delete();   }}

沧海一幻觉

在删除数据透视表中的用户或角色清除寄存器之前,将此模型添加到模型中。User.phpprotected static function boot (){    parent::boot();    static::deleting (function ($user) {        $user->roles()->detach();    });}Role.phpprotected static function boot (){    parent::boot();    static::deleting (function ($role) {        $role->users()->detach();    });}
随时随地看视频慕课网APP
我要回答