mvdnbrk / laravel-model-expires
一个用于为Eloquent模型分配过期日期的包
v1.8.1
2020-11-11 21:13 UTC
Requires
- php: ^7.2 || ^8.0
- illuminate/database: ^6.0 || ^7.0 || ^8.0
- illuminate/support: ^6.0 || ^7.0 || ^8.0
Requires (Dev)
- doctrine/dbal: ^2.5
- orchestra/testbench: ^4.0 || ^5.0 || ^6.0
- phpunit/phpunit: ^8.0 || ^9.4
README
为Eloquent模型分配过期日期
安装
您可以通过composer安装此包
composer require mvdnbrk/laravel-model-expires
使用方法
要在模型上使用过期日期,请使用Expirable
特质
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Mvdnbrk\EloquentExpirable\Expirable; class Subscription extends Model { use Expirable; }
您应该在数据库表中添加一个expires_at
列。
此包包含一个辅助方法来创建此列
class CreateSubscriptionsTable extends Migration { public function up(): void { Schema::create('subscriptions', function (Blueprint $table) { $table->expires(); }); } public function down(): void { Schema::dropExpires(); } }
Expirable
特质将自动将expires_at
属性转换为DateTime
/ Carbon
实例。
自定义列名
您可以通过设置EXIRES_AT
常量或在模型上重写getExpiresAtColumn
方法来自定义列名。
class Subscription extends Model { use Expirable; const EXPIRES_AT = 'ends_at'; }
$table->expires('ends_at'); $table->dropExpires('ends_at');
设置过期
您可以通过设置带有TTL(以秒为单位)的expires_at
属性来设置模型的过期时间
$subscription->expires_at = 600;
您也可以传递一个表示过期日期的DateTime
实例,而不是传递整数形式的秒数
$subscription->expires_at = now()->addMinutes(10);
忽略过期
您可以通过设置负数或零TTL或使用discardExpiration
方法来忽略模型的过期
$subscription->expires_at = 0; $subscription->expires_at = -5; $subscription->discardExpiration()->save();
确定过期
要确定给定的模型实例是否已过期,请使用expired
方法
if ($subscription->expired()) { // }
要确定给定的模型是否会将来过期,请使用willExpire
方法
if ($subscription->willExpire()) { // }
查询模型
withoutExpired
方法将检索未过期的模型
$subscriptions = App\Models\Subscription::withoutExpired()->get();
onlyExpired
方法将检索仅
过期的模型
$subscriptions = App\Models\Subscription::onlyExpired()->get();
expiring
方法将检索仅
将来会过期的模型
$subscriptions = App\Models\Subscription::expiring()->get();
notExpiring
方法将检索仅
不会过期的模型
$subscriptions = App\Models\Subscription::notExpiring()->get();
待办事项
- 添加一个
expired:prune
控制台命令来删除过期的模型,或执行自定义实现。 - 添加一个查询作用域,用于查询将在
...
中过期的模型
测试
composer test
更新日志
请参阅更新日志以获取有关最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
安全漏洞
请参阅我们的安全策略以了解如何报告安全漏洞。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。