ajaycalicut17 / laravel-trash
Laravel 包用于管理软删除。
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-09-23 11:09:28 UTC
README
通过使用此包,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)。请参阅 许可证文件 了解更多信息。