sbamtr / laravel-auto-hard-deleter
Laravel 自动硬删除
Requires
- php: >=7.2.5
- illuminate/console: ^6|^7|^8|^9
- illuminate/database: ^6.20.12|^7.30.4|^8.22.1|^9
- illuminate/support: ^6|^7|^8|^9
Requires (Dev)
- orchestra/testbench: ^3|^4|^5|^6|^7
README
此包会在您定义的时间间隔后自动删除软删除的行。
适用于 Laravel 和 Lumen 6, 7, 8, 9
安装
步骤 1
使用以下命令使用 composer 请求此包
composer require sbamtr/laravel-auto-hard-deleter
步骤 2
对于 Laravel
服务提供程序将自动注册。或者您可以在您的 config/app.php
文件中手动添加服务提供程序
'providers' => [ // ... \sbamtr\LaravelAutoHardDeleter\AutoHardDeleteServiceProvider::class, ];
对于 Lumen
在您的 bootstrap/app.php
文件的 Register Service Providers
部分下添加此行代码
$app->register(\sbamtr\LaravelAutoHardDeleter\AutoHardDeleteServiceProvider::class);
步骤 3
现在是为命令设置计划的时候了。在您的 app/Console/Kernel.php
文件中,在 schedule()
函数中粘贴以下代码
protected function schedule(Schedule $schedule) { // ... $schedule->command(\sbamtr\LaravelAutoHardDeleter\HardDeleteExpiredCommand::class)->hourly(); // ... }
在上面的代码中,已计划每小时运行此命令。您可以更改它。有关更多信息,请参阅此页面。
步骤 4(可选)
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="sbamtr\LaravelAutoHardDeleter\AutoHardDeleteServiceProvider" --tag=config
注意:如果您正在使用 Lumen,您必须使用此包。
您还可以在 .env
文件中设置 AUTO_HARD_DELETE_AFTER
值。例如以下代码
... AUTO_HARD_DELETE_AFTER='1 day' ...
使用方法
在您的使用 SoftDeletes
特性的模型中,您可以使用以下代码启用自动硬删除
class SampleModel extends Model { use SoftDeletes; const AUTO_HARD_DELETE_ENABLED = true; }
只需在您的模型中写下 const AUTO_HARD_DELETE_ENABLED = true
!您还可以使用以下行设置您删除实体的过期时间
const AUTO_HARD_DELETE_AFTER = '5 months';
在上面的代码中,软删除实体模型的有效期为 5 个月。最终代码如下
class SampleModel extends Model { use SoftDeletes; const AUTO_HARD_DELETE_ENABLED = true; const AUTO_HARD_DELETE_AFTER = '5 months'; }
您可以为 AUTO_HARD_DELETE_AFTER
设置任何其他值,如 5
(表示 5 天)、2 hours
、45 days
、2.5 months
、1 year
等。
注意:如果您在您的模型中没有为 AUTO_HARD_DELETE_AFTER
设置任何值,则具有 AUTO_HARD_DELETE_ENABLED = true
的软删除模型将在名为 auto-hard-deleter.php
的配置文件中定义的时间后进行硬删除。
自动硬删除命令
您还可以使用此 artisan 命令手动删除过期的行
php artisan hard-delete-expired
由 Siavash Bamshadnia 用爱编写
请通过为这个存储库加星来支持我。