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.
You can install the package via composer:
composer require dillingham/soft-deletes-parent
Add the parent_deleted_at
column to your table:
Schema::table('posts', function (Blueprint $table) {
$table->softDeletesParent();
});
And add the trait and parent model to your child model:
<?php
namespace App\Models;
use Dillingham\SoftDeletesParent\SoftDeletesParent;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
use SoftDeletesParent;
}
<?php
namespace App\Providers;
class AppServiceProvider
{
public function register()
{
Post::softDeletesParent(Author::class);
}
}
With parent trashed:
Post::withParentTrashed()->get();
Only parent trashed:
Post::onlyParentTrashed()->get();
composer test
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.