falconsw / 软删除清理工具
从数据库中清理软删除的记录
Requires
- php: >=7.3
- illuminate/console: ^8|^9
- illuminate/database: ^8|^9
- illuminate/support: ^8|^9
- laravel/legacy-factories: ^1.3
Requires (Dev)
- orchestra/testbench: ^6.0 || ^7.0
- phpunit/phpunit: ^9.0
- roave/security-advisories: dev-latest
This package is auto-updated.
Last update: 2024-09-30 01:41:14 UTC
README
此包将在您定义的时间间隔后自动删除软删除的行。
安装
步骤 1
使用以下命令使用 composer 需求此包
composer require falconsw/soft-delete-cleaner
步骤 2
服务提供者将自动注册。或者您可以在您的 config/app.php
文件中手动添加服务提供者
'providers' => [ // ... \FalconSW\SoftDeleteCleaner\SoftDeleteCleanerServiceProvider::class, ];
步骤 3
现在是为命令设置计划的时候了。在您的 app/Console/Kernel.php
文件中,将以下代码粘贴到 schedule()
函数中
protected function schedule(Schedule $schedule) { // ... $schedule->command(\FalconSW\SoftDeleteCleaner\SoftDeleteCleanerCommand::class)->hourly(); // ... }
在上面的代码中,计划每小时运行一次命令。您可以更改它。有关更多信息,请参阅此页面。
步骤 4(可选)
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="FalconSW\SoftDeleteCleaner\SoftDeleteCleanerServiceProvider" --tag=config
您还可以在 .env
文件中设置 SOFT_DELETE_CLEANER_EXPIRE_TIME
的值,如下所示
... SOFT_DELETE_CLEANER_EXPIRE_TIME='1 day' ...
用法
在您的使用了 SoftDeletes
特性的模型中,您可以使用以下代码启用软删除清理工具
class SampleModel extends Model { use SoftDeletes; const SOFT_DELETE_CLEANER_STATUS = true; }
只需在您的模型中写入 const SOFT_DELETE_CLEANER_STATUS = true
即可!您还可以使用以下行设置您删除实体的过期时间
const SOFT_DELETE_CLEANER_EXPIRE_TIME = '5 months';
在上面的代码中,软删除实体模型的有效期为 5 个月。最终的代码如下
class SampleModel extends Model { use SoftDeletes; const SOFT_DELETE_CLEANER_STATUS = true; const SOFT_DELETE_CLEANER_EXPIRE_TIME = '5 months'; }
您可以为 SOFT_DELETE_CLEANER_EXPIRE_TIME
设置任何其他值,如 5
(表示 5 天)、2 hours
、45 days
、2.5 months
、1 year
等。
注意:如果您在模型中没有为 SOFT_DELETE_CLEANER_EXPIRE_TIME
设置任何值,则带有 SOFT_DELETE_CLEANER_STATUS = true
的软删除模型将在名为 auto-hard-deleter.php
的配置文件中定义的时间后进行硬删除。
软删除清理工具命令
您还可以使用 artisan 命令手动删除过期的行
php artisan soft-delete:clean