LARAVEL: SoftDelete всех дочерних элементов и их дочерних элементов. - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь создать динамическое древовидное меню с одной таблицей sql на основе метода parent_id.

enter image description here

enter image description here

Я могу сгенерировать древовидное представление на своей блэйд-странице и добавить новые разделы и дочерние элементы.

Теперь моя проблема заключается в том, как можно программно удалить все дочерние и дочерние элементы при программном удалении родительского раздела?

Например, при удалении раздела PHP все дочерние и дочерние элементы раздела PHP должны быть удалены.

Спасибо.

1 Ответ

0 голосов
/ 06 ноября 2018

Вы можете использовать события, предоставленные 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

...