php - Laravel 4 级联软删除

标签 php mysql laravel laravel-4

是否有一种模块化的方法可以在 L4 中执行级联软删除?

我的数据库已经设计为通过硬删除来执行此操作,因为所有表都与另一个表相关。但是,我正在使用软删除并且真的不想让 delete() 我的模型中的方法 - 仅仅是因为 (A) 模型的数量,以及 (B) 当其他模型发生变化时必须编辑所有模型中的 delete() 方法。

如有任何指点或提示,我们将不胜感激。

最佳答案

我使用 model events 进行级联删除,例如,在 Product 模型中,我绑定(bind)到已删除的事件,因此我可以软删除所有关系:

    // Laravel's equivalent to calling the constructor on a model
    public static function boot()
    {
        // make the parent (Eloquent) boot method run
        parent::boot();    

        // cause a soft delete of a product to cascade to children so they are also soft deleted
        static::deleted(function($product)
        {
            $product->images()->delete();
            $product->descriptions()->delete();
            foreach($product->variants as $variant)
            {
                $variant->options()->delete();
                $variant->delete();
            }
        });
    }

关于php - Laravel 4 级联软删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17243637/

相关文章:

php - 上传多个文件并重命名 - PHP

php - javascript-php var post 获取

Mysql DISTINCT 具有多个列(删除重复项)

php - PHP 无法识别变量

laravel - 如何在 Ratchet 中加载 Laravel session ?

php - 基于时区的碳上两次以秒为单位的差异

php - 无法将身份验证电子邮件作为 View 中的字段值(larave5.3)

php - mysql 查询 where condition 在 int 上工作但在 string 上不工作

javascript - 如何获取ID和更改背景

php - 在 Linux 中使用 PHP 检查进程是否正在运行