在Laravel中利用模型事件清除冗余数据
比如说,用户与角色是多对多关系,通过中间表关联,那么,在删除一个角色的时候,对应的中间表数据也需要删除,否则就产生冗余数据了,一般通常是这样写的:
$role->users()->detach();
$role->delete();
写两行代码,先清空与用户的关系,在删除自身。其实我们也可以利用事件这样写:
在 ROLE 模型中这样定义:
protected static function boot()
{
parent::boot();
static::deleting(function ($model) {
$model->users()->detach();
});
}
上述定义了之后,我们只需要:
$role->delete();
在删除之前会触发事件解除与用户的关系。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭