LARAVEL:SoftDelete所有孩子和他们的孩子在SoftDelete父母

时间:2018-11-06 19:20:03

标签: laravel foreign-keys parent-child

我正在尝试使用基于parent_id方法的一个sql表创建一个动态树视图菜单。

enter image description here

enter image description here

我可以在刀片页上生成树形视图,并添加新的部分和子项。

我现在的问题是,在软删除父节时如何软删除所有子项和子子项?

例如,删除PHP部分时,必须删除PHP部分下的所有子级和子级。

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以利用Laravel提供的事件。

<?php

class Parent extends Model
{

    protected static function boot()
    {
        static::deleting(function ($instance) {
            $instance->child->each->delete();
        });

        static::restoring(function ($instance) {
            $instance->child->each->restore();
        });
    }
}

然后,您在子课堂中也做同样的事情。当您的$parent被软删除时,它将软删除所有子项。然后,该子项还将软删除其所有子项。

有关更多信息:https://laravel.com/docs/5.7/eloquent#events