为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
料青山看我应如是 2021-05-07 14:13:51
想象一下我有User和Role模特。现在,我正在从数据库中删除多个用户。例如,我删除了ID为1、2、3和4的用户。现在,我想从数据透视表中删除其中user_id = 1、2、3或4的所有内容。最佳方法是什么?我的意思是laravel实现。
查看完整描述

3 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

如果用户和角色之间存在许多关系,则可以按以下方式解决您的问题


这是示例代码User.php


class User extends Authenticatable implements CanResetPassword

{

  protected $table = "users";


 public function roles(){

  return $this->belongsToMany(Role::class,'role_user');

 }

}

Role.php


class 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();

   }

}


查看完整回答
反对 回复 2021-05-28
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

在删除数据透视表中的用户或角色清除寄存器之前,将此模型添加到模型中。


User.php


protected static function boot ()

{

    parent::boot();


    static::deleting (function ($user) {

        $user->roles()->detach();

    });

}

Role.php


protected static function boot ()

{

    parent::boot();


    static::deleting (function ($role) {

        $role->users()->detach();

    });

}


查看完整回答
反对 回复 2021-05-28
  • 3 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信