tugapackages / laravel-model-expires
为 Eloquent 模型分配过期日期的软件包
v1.8.2
2022-07-02 20:46 UTC
Requires
- php: ^7.2 || ^8.1
- illuminate/database: ^6.0 || ^7.0 || ^8.0 || ^9.0
- illuminate/support: ^6.0 || ^7.0 || ^8.0 || ^9.0
Requires (Dev)
- doctrine/dbal: ^2.10
- mockery/mockery: ^1.3.3
- 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
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG
贡献
有关详细信息,请参阅 CONTRIBUTING
安全漏洞
有关如何报告安全漏洞的详细信息,请参阅 我们的安全策略
鸣谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件