Skip to content

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

License

Notifications You must be signed in to change notification settings

madman-81/laravel-pivot-softdeletes

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel pivot SoftDeletes for Laravel 5.8 & 6.x & 7.x & 8.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.

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%