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