使用 Eloquent 实现级联软删除
发布于 作者: Eric L. Barnes
Michael Dyrynda 为 Laravel 和 Eloquent 推出了一个新的级联软删除包。
当您删除一个父记录(例如一篇博文)时,您可能希望将与之关联的任何评论也删除,作为对数据进行自我维护的一种方式。
通常,您将使用数据库的外部键约束,在评论表中的外部键约束中添加一个 ON DELETE CASCADE 规则。
能够在删除父记录后恢复父记录可能是有用的。在这些情况下,您可能需要使用 Laravel 的软删除功能。
但是,这样做会失去使用数据库本来提供的级联删除功能的能力。这就是这个包旨在弥合使用 SoftDeletes 特性时的功能差距。
这里是一些示例代码
class Post extends Model{ use SoftDeletes, CascadeSoftDeletes; protected $cascadeDeletes = ['comments']; protected $dates = ['deleted_at']; public function comments() { return $this->hasMany(Comment::class); }}
设置很简单,如果您需要级联软删除,请查看它。
