sbamtr/laravel-auto-hard-deleter

1.3.0 2022-02-09 07:15 UTC

This package is auto-updated.

Last update: 2024-09-05 07:47:35 UTC


README

PHP Composer Build Status StyleCI Latest Stable Version License PHP from Travis config CodeFactor

此包会在您定义的时间间隔后自动删除软删除的行。

适用于 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 hours45 days2.5 months1 year 等。

注意:如果您在您的模型中没有为 AUTO_HARD_DELETE_AFTER 设置任何值,则具有 AUTO_HARD_DELETE_ENABLED = true 的软删除模型将在名为 auto-hard-deleter.php 的配置文件中定义的时间后进行硬删除。

自动硬删除命令

您还可以使用此 artisan 命令手动删除过期的行

php artisan hard-delete-expired

由 Siavash Bamshadnia 用爱编写

请通过为这个存储库加星来支持我。