ajaycalicut17 / laravel-trash
Laravel package to manage soft delete.
v1.0.2
2024-09-21 07:47 UTC
Requires
- php: ^8.1
- illuminate/support: ^10.0
Requires (Dev)
- nunomaduro/larastan: ^2.0
- orchestra/testbench: ^8.0
- pestphp/pest-plugin-laravel: ^2.1
This package is auto-updated.
Last update: 2024-10-23 11:20:30 UTC
README
The Laravel "soft delete" functionality is effectively managed through the use of this package. It works like trash in your system.
Installation ⚙️
- You can install the package via composer:
composer require ajaycalicut17/laravel-trash
- Run migrations to create tables for this package:
php artisan migrate
- Check model is "soft delete" able, this package work by using laravel "soft delete" functionality:
<?php namespace App\Models; + use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { + use SoftDeletes; }
- To enable this package for a model, add the Ajaycalicut17\LaravelTrash\Traits\Trashable trait to the Eloquent model:
<?php namespace App\Models; + use Ajaycalicut17\LaravelTrash\Traits\Trashable; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { + use SoftDeletes, Trashable; }
- To start listening "trashed" model event, define a $dispatchesEvents property on your Eloquent model:
<?php namespace App\Models; + use Ajaycalicut17\LaravelTrash\Events\MoveToTrash; use Ajaycalicut17\LaravelTrash\Traits\Trashable; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use SoftDeletes, Trashable; + + /** + * The event map for the model. + * + * @var array + */ + protected $dispatchesEvents = [ + 'trashed' => MoveToTrash::class, + ]; }
- To override the trash name (Optional):
<?php namespace App\Models; use Ajaycalicut17\LaravelTrash\Events\MoveToTrash; use Ajaycalicut17\LaravelTrash\Traits\Trashable; + use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use SoftDeletes, Trashable; /** * The event map for the model. * * @var array */ protected $dispatchesEvents = [ 'trashed' => MoveToTrash::class, ]; + + public static function trashName(Model $model): string + { + return static::class.' '.$model->id; + } }
- Publishing the config file (Optional):
php artisan vendor:publish --provider="Ajaycalicut17\LaravelTrash\LaravelTrashServiceProvider" --tag="config"
- To periodically delete the model from the trash, add model:prune Artisan command in your application's App\Console\Kernel class and change the config\trash.php pruning status to "true", you can also enter your pruning period here. (Optional):
+ use Ajaycalicut17\LaravelTrash\Models\Trash; /** * Define the application's command schedule. */ protected function schedule(Schedule $schedule): void { + $schedule->command('model:prune', [ + '--model' => Trash::class, + ])->daily(); }
Usage 🔨
- To get all trash model data:
Trash::all();
- To get all trash model and associated model data:
Trash::with('trashable')->get();
- To restore associated model form trash:
Trash::first()->restoreFromTrash();
- To delete trashed model and associated model:
Trash::first()->deleteFromTrash();
- To delete all trashed model and associated model:
Trash::emptyTrash();
Testing 🧪
composer test
Changelog 🚀
Please see CHANGELOG for more information what has changed recently.
Contributing 🤝
Please see CONTRIBUTING for details.
Credits 🔥
License 📃
The MIT License (MIT). Please see License File for more information.