Laravel 中如何利用『模型事件』来实现删除数据时的连带删除?

37

删除一条数据库记录的时候希望能自动删除这条记录关联的其它数据,如删除用户后连带删除其创建的文章和图片。

可以用Eloquentdeleting事件来实现:

class User extends Eloquent
{
    public function photos()
    {
        return $this->hasMany('Photo');
    }

    public function posts()
    {
        return $this->hasMany('Post');
    }

    protected static function boot()
    {
        parent::boot();

        static::deleting(function($user) {
             $user->photos()->delete();
             $user->posts()->delete();
        });
    }
}
讨论数量: 8

大兄弟,我的不起作用啊

2个月前

是好的,是我搞错了

2个月前

不是应该用deleted嘛?

2个月前

学习了

2个月前

多对多无法删除

2个月前

学习了

2个月前

$user 变量是怎么取值的呢?你这样是得不到值的啊

2个月前
largezhou

要不要用事务呢?

2个月前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!