mvdnbrk/laravel-model-expires

一个用于为Eloquent模型分配过期日期的包

v1.8.1 2020-11-11 21:13 UTC

This package is auto-updated.

Last update: 2024-09-07 19:23:45 UTC


README

Laravel Model Expires

PHP version Latest Version on Packagist Software License Tests Code style Total Downloads

为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)。有关更多信息,请参阅许可证文件