I'm using Laravel 7.x and I need a proper way to get all the children + children... categories of a parent category.
category table;
$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();
category_translation table;
$table->id();
$table->integer('category_id')->index()->unsigned();
$table->integer('language_id')->index()->unsigned();
$table->string('title');
Example category structure;
- Programming (top category)
-- Web
---- Php
---- Ruby
---- Perl
-- Mobile
---- Objective C
---- Java
---- Swift
My purpose is to delete all sub + sub + sub categories when I delete a parent category. I need to get recursively all the sub categories by giving a parent ID to delete all of them.
I made some searches to find a way but nothing was helpful for me.
I hope I can find a solution here.
Thank you.
I think you can add a function like this (if you want a on cascade effect on soft deletes): SubCategory.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();
}
});
}
Same for Category.php , except that $sub_category will be $category, and $sub_sub_cateory will be $sub_category.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.