ajaycalicut17/laravel-trash

Laravel 包用于管理软删除。

v1.0.2 2024-09-21 07:47 UTC

This package is auto-updated.

Last update: 2024-09-23 11:09:28 UTC


README

GitHub Actions Latest Version on Packagist Total Downloads License

通过使用此包,Laravel 的 "软删除" 功能得到了有效管理。它就像系统中的回收站。

安装 ⚙️

  • 您可以通过 composer 安装此包
composer require ajaycalicut17/laravel-trash
  • 运行迁移以为此包创建表
php artisan migrate
  • 检查模型是否支持 "软删除",此包通过使用 Laravel 的 "软删除" 功能来实现
<?php

namespace App\Models;

+ use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
+    use SoftDeletes;
}
  • 要为模型启用此包,将 Ajaycalicut17\LaravelTrash\Traits\Trashable 特性添加到 Eloquent 模型
<?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;
}
  • 要开始监听 "trashed" 模型事件,在您的 Eloquent 模型上定义一个 $dispatchesEvents 属性
<?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,
+    ];
}
  • 要覆盖垃圾名称(可选)
<?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;
+    }
}
  • 发布配置文件(可选)
php artisan vendor:publish --provider="Ajaycalicut17\LaravelTrash\LaravelTrashServiceProvider" --tag="config"
  • 要定期从垃圾箱中删除模型,在您的应用程序的 App\Console\Kernel 类中添加模型:prune Artisan 命令,并将 config\trash.php 的修剪状态更改为 "true",您还可以在此处输入修剪周期。(可选)
+ 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();
}

用法 🔨

  • 获取所有垃圾模型数据
Trash::all();
  • 获取所有垃圾模型及其关联模型数据
Trash::with('trashable')->get();
  • 从垃圾箱中恢复关联模型
Trash::first()->restoreFromTrash();
  • 删除已删除的模型及其关联模型
Trash::first()->deleteFromTrash();
  • 删除所有已删除的模型及其关联模型
Trash::emptyTrash();

测试 🧪

composer test

变更日志 🚀

请参阅 CHANGELOG 了解最近更改的详细信息。

贡献 🤝

请参阅 CONTRIBUTING 了解详细信息。

致谢 🔥

许可证 📃

MIT 许可证(MIT)。请参阅 许可证文件 了解更多信息。