Laravel Eloquent:模型删除时的连带删除 0 个改进

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

可以用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();
        });
    }
}
本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 16

大兄弟,我的不起作用啊

10个月前 评论

是好的,是我搞错了

10个月前 评论
nff93

不是应该用deleted嘛?

10个月前 评论

多对多无法删除

10个月前 评论

学习了

10个月前 评论

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

10个月前 评论
largezhou

要不要用事务呢?

10个月前 评论

@fivenull 兄弟 你是怎么解决的 我这里也不能触发

7个月前 评论

@JueMeiAlg 你的关联关系定义了没

3个月前 评论
yibendao

@fivenull 我这里定义了关联关系,为什么删不掉所关联的评论和图片

file

3个月前 评论

@yibendao 仔细看你的代码,你删除用的deleted,应该是delete

3个月前 评论
yibendao

@fivenull 恩。谢谢啦,刚刚我弄好了

3个月前 评论

这样做的话,就不需要外键了?

2个月前 评论

又学一招 赞一个

2个月前 评论

这个不应该用数据库外键来实现吗?

1个月前 评论
Summer: 软删除的时候用不了外键 1个月前

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!