The Laravel "soft delete" functionality is effectively managed through the use of this package. It works like trash in your system.
- 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();
}- 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();composer testPlease see CHANGELOG for more information what has changed recently.
Please see CONTRIBUTING for details.
The MIT License (MIT). Please see License File for more information.