LaravelPackages.net
Acme Inc.
Toggle sidebar
ddzobov/laravel-pivot-softdeletes

Make your Eloquent models pivots be able to soft deleted in Laravel/Lumen

559.987
69
2.3.1
About ddzobov/laravel-pivot-softdeletes

ddzobov/laravel-pivot-softdeletes is a Laravel package for make your eloquent models pivots be able to soft deleted in laravel/lumen. It currently has 69 GitHub stars and 559.987 downloads on Packagist (latest version 2.3.1). Install it with composer require ddzobov/laravel-pivot-softdeletes. Discover more Laravel packages by ddzobov or browse all Laravel packages to compare alternatives.

Last updated

Laravel pivot SoftDeletes for Laravel 5.8 to 12.x

Installation

Require this package with composer:

composer require ddzobov/laravel-pivot-softdeletes

Basic usage

use DDZobov\PivotSoftDeletes\Model;

class Post extends Model
{
    public function tags()
    {
        return $this->belongsToMany(Tag::class)->withSoftDeletes();
    }
}

class Tag extends Model
{
    public function posts()
    {
        return $this->belongsToMany(Post::class)->withSoftDeletes();
    }
}

Custom pivot model:

use DDZobov\PivotSoftDeletes\Model;
use DDZobov\PivotSoftDeletes\Relations\Pivot;

class Post extends Model
{
    public function tagsWithCustomPivot()
    {
        return $this->belongsToMany(Tag::class)->using(PostTag::class)->withSoftDeletes();
    }
}

class Tag extends Model
{
    public function postsWithCustomPivot()
    {
        return $this->belongsToMany(Post::class)->using(PostTag::class)->withSoftDeletes();
    }
}

class PostTag extends Pivot
{
    
}

Custom deleted_at field:

$this->belongsToMany(Post::class)->withSoftDeletes('custom_deleted_at');

Show without trashed (default behavior):

// withoutTrashed() already called inside withSoftDeletes()
$this->belongsToMany(Post::class)->withSoftDeletes();

// same behavior
$this->belongsToMany(Post::class)->withSoftDeletes()->withoutTrashedPivots();

Show exists & trashed:

$this->belongsToMany(Post::class)->withSoftDeletes()->withTrashedPivots();

Show only trashed:

$this->belongsToMany(Post::class)->withSoftDeletes()->onlyTrashedPivots();

Restore pivot recods:

$post->tags()->restore([$tag->id]);

Restore pivot recods (with custom pivot):

$post->tagsWithCustomPivot()->restore([$tag->id]);

Force detach pivot records:

$post->tags()->forceDetach([$tag->id]);

Sync with force detaching pivot records:

$post->tags()->syncWithForceDetaching([$tag->id]);

Testing

composer test

License

The MIT License (MIT). Please see License File for more information.

Star History Chart