Как рекурсивно получить все дочерние категории по родительской категории в Laravel - PullRequest
0 голосов
/ 04 августа 2020

Я использую Laravel 7.x, и мне нужен правильный способ получить все дочерние + дочерние ... категории родительской категории.

таблица категорий;

$table->id();
$table->integer('parent_id')->default(0)->unsigned();
$table->boolean('is_active')->default(true);
$table->integer('sort_order')->default(1)->unsigned();
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP'));
$table->timestamp('deleted_at')->nullable();

таблица перевода_категории;

$table->id();
$table->integer('category_id')->index()->unsigned();
$table->integer('language_id')->index()->unsigned();
$table->string('title');

Пример структуры категории;

- Programming (top category)

-- Web
---- Php
---- Ruby
---- Perl

-- Mobile
---- Objective C
---- Java
---- Swift

Моя цель - удалить все под + под + подкатегории, когда я удаляю родительскую категорию. Мне нужно рекурсивно получить все подкатегории, указав родительский идентификатор для их удаления.

Я сделал несколько поисков, чтобы найти способ, но ничего не помогло.

Надеюсь, я можете найти решение здесь.

Спасибо.

1 Ответ

0 голосов
/ 04 августа 2020

Я думаю, вы можете добавить такую ​​функцию (если вы хотите каскадный эффект при мягком удалении): Подкатегория. php

 public static function boot ()
        {
            parent::boot();
    
            self::deleting(function (SubCategory $sub_category) {
    
                foreach ($sub_category->sub_sub_category as $sub_sub_category)
                {
                    $sub_sub_category->delete();
                }
            });
        }

То же самое для Категория. php, за исключением того, что $ sub_category будет $ category, а $ sub_sub_cateory будет $ sub_category.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...