Laravel Packages

Soft Delete Child Models When a Parent is Deleted

Published
Soft Delete Child Models When a Parent is Deleted image

Laravel Soft Deletes Parent is a package by Brian Dillingham that soft deletes child models when a parent model is soft-deleted:

Automatically soft delete a model's children while maintaining their own soft-deleted state when you restore the parent model. After installing the trait below, the Post model's parent_deleted_at will update whenever an Author model is deleted or restored. This allows you to maintain the original deleted_at for the Post model after Author is restored. The Post model will scope queries to exclude any where the parent is deleted.

To use this package, you'll want to add a parent_deleted_at column on the child database table (this package provides a migration helper to generate the correct column), add a trait to the child model, and register parent models.

Given a parent Author model and a child Post model, here's how you'd set it up:

// Use the `SoftDeletesParent` trait on the child model.
namespace App\Models;
 
use Dillingham\SoftDeletesParent\SoftDeletesParent;
use Illuminate\Database\Eloquent\Model;
 
class Post extends Model
{
use SoftDeletesParent;
}
 
// Register parent models
class AppServiceProvider
{
public function register()
{
Post::softDeletesParent(Author::class);
}
}

Now you can query with provided scopes

// Get all posts, including soft-deleted records.
Post::withParentTrashed()->get();
 
// Get soft-deleted posts.
Post::onlyParentTrashed()->get();

You can learn more about this package, get full installation instructions, and view the source code on GitHub.

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

serpapi logo
SerpApi

The Web Search API for Your LLM and AI Applications

Visit SerpApi

The latest

View all →
CPX: The Composer Package Executor for PHP image

CPX: The Composer Package Executor for PHP

Read article
Laravel AI SDK Adds Human-in-the-Loop Tool Approval image

Laravel AI SDK Adds Human-in-the-Loop Tool Approval

Read article
Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals image

Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals

Read article
Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs image

Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs

Read article
Blade Formatting in Laravel Pint image

Blade Formatting in Laravel Pint

Read article
Inertia DevTools Is Now on the Chrome Web Store image

Inertia DevTools Is Now on the Chrome Web Store

Read article