ddzobov / laravel-pivot-softdeletes
Make your Eloquent models pivots be able to soft deleted in Laravel/Lumen
Installs: 275 693
Dependents: 1
Suggesters: 0
Security: 0
Stars: 61
Watchers: 4
Forks: 18
Open Issues: 7
Type:package
Requires
- illuminate/database: >=5.8 <11.0|^11.0
Requires (Dev)
- laravel/framework: >=5.8 <11.0|^11.0
- mockery/mockery: ^1.4.4
- orchestra/testbench-core: ^7.1|^8.22
- phpunit/phpunit: ^9.5.8|^10.5
README
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.