Laravel Packages

Cascading soft deletes with Eloquent

Published

Michael Dyrynda has a new package for cascading soft deletes with Laravel and Eloquent.

In scenarios when you delete a parent record – say for example a blog post – you may want to also delete any comments associated with it as a form of self-maintenance of your data.

Normally, you would use your database’s foreign key constraints, adding an ON DELETE CASCADE rule to the foreign key constraint in your comments table.

It may be useful to be able to restore a parent record after it was deleted. In those instances, you may reach for Laravel’s soft deleting functionality.

In doing so, however, you lose the ability to use the cascading delete functionality that your database would otherwise provide. That is where this package aims to bridge the gap in functionality when using the SoftDeletes trait.

Here is some example code:

class Post extends Model
{
use SoftDeletes, CascadeSoftDeletes;
 
protected $cascadeDeletes = ['comments'];
 
protected $dates = ['deleted_at'];
 
public function comments()
{
return $this->hasMany(Comment::class);
}
}

It’s simple to setup and if you are in need of cascading soft deletes, check it out.

Eric L. Barnes photo

Eric is the creator of Laravel News and has been covering Laravel since 2012.

Sponsored

laravelcloud logo
Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Visit Laravel Cloud

The latest

View all →
PayZephyr: One Payment API for Stripe, Paystack, and PayPal image

PayZephyr: One Payment API for Stripe, Paystack, and PayPal

Read article
Bifrost Turns One With AI Builds and New Workflows image

Bifrost Turns One With AI Builds and New Workflows

Read article
Preview Blade Templates in macOS Finder with Quick Blade image

Preview Blade Templates in macOS Finder with Quick Blade

Read article
Artisan Debugging Commands in Laravel Telescope 5.24.0 image

Artisan Debugging Commands in Laravel Telescope 5.24.0

Read article
Queue totalSize() and JobInterrupted Event in Laravel 13.31 image

Queue totalSize() and JobInterrupted Event in Laravel 13.31

Read article
Find Unexpected Test Inputs with Fuzz for Pest image

Find Unexpected Test Inputs with Fuzz for Pest

Read article