tightenco / quicksand
轻松安排定期清理旧的软删除Eloquent数据。
Requires
- php: ^8.1
- illuminate/config: ^8.0 || ^9.0 || ^10.0 || ^11.0
- illuminate/console: ^8.0 || ^9.0 || ^10.0 || ^11.0
- illuminate/log: ^8.0 || ^9.0 || ^10.0 || ^11.0
- illuminate/support: ^8.0 || ^9.0 || ^10.0 || ^11.0
Requires (Dev)
- fakerphp/faker: ^1.9.1
- laravel/legacy-factories: ^1.0.4
- mockery/mockery: ^1.3.2
- orchestra/testbench: ^6.0 || ^7.0 || ^8.0 || ^9.0
- phpunit/phpunit: ^8.5 || ^9.0 || ^10.5
README
Quicksand
在Eloquent模型或连接表软删除一定时间后,安排强制删除。
Quicksand是一个Artisan命令,您可以在计划任务中每天运行。
要求
- 如果您使用Laravel 5.6或更高版本,请使用此包的
2.0
版本。 - 如果您使用Laravel 5.5并运行PHP 7.1或更高版本,请使用此包的
1.0
版本。 - 如果您使用Laravel 5.4或更低版本,或PHP 7.0或更低版本,请使用此包的
0.2
版本。
安装
-
将Quicksand添加到Composer文件中:
composer require tightenco/quicksand
-
在
config/app.php
中注册Quicksand服务提供者(如果您使用Laravel 5.5或更高版本,由于包自动发现,可以跳过此步骤)'providers' => [ ... Tightenco\Quicksand\QuicksandServiceProvider::class,
-
发布您的配置:
php artisan vendor:publish --provider="Tightenco\Quicksand\QuicksandServiceProvider"
-
编辑您的配置。定义您希望Quicksand为您清理的类和/或连接表,Quicksand应该等待多少天来清理,以及是否记录结果。默认的
'days'
清理时间可以通过在注册模型或连接表时指定'days'
键来覆盖- 注意:删除时,Quicksand将忽略应用于模型的全局作用域。
- 注意:在版本2.3之前,
deletables
配置键名为models
,且不支持连接表。
'days' => 30, 'deletables' => [ App\Default::class, App\CleanEveryTwentyDays::class => [ 'days' => 20 // override default 'days' ], 'example_pivot', 'example_pivot' => [ 'days' => 20 // override default 'days' ] ]
-
在
app/Console/Kernel.php
中安排命令protected function schedule(Schedule $schedule) { $schedule->command('quicksand:run') ->daily(); }
使用自定义日志文件
如果您使用Laravel 5.6或更高版本,您可以通过在logging.php
配置文件中添加一个quicksand
通道来自定义Quicksand使用的日志记录器,如下所示
'channels' => [ /* ... */ 'quicksand' => [ 'driver' => 'single', 'path' => storage_path('logs/quicksand.log'), 'level' => 'info', ], ]
如果您使用Laravel 5.5或更低版本,您可以通过编辑quicksand.php
配置文件中的custom_log_file
选项来自定义Quicksand使用的日志记录器。
默认情况下,Quicksand将记录到标准的laravel.log
文件。
版本控制
我们使用SemVer进行版本控制。有关可用版本,请参阅此存储库的标签。
作者
- Benson Lee - besologic
- Matt Stauffer - mattstauffer
另请参阅参与此项目的贡献者列表。
此包由Tighten开发和维护。
测试
您可以通过运行以下命令来测试此包:
composer test
许可
本项目采用MIT许可证 - 有关详细信息,请参阅LICENSE.md文件。