Пакет для функционала срока годности для вашей модели Eloquent Laravel

Установка через композер

composer require mvdnbrk/laravel-model-expires

Чтобы начать использовать этот пакет, достаточно подключить трейт Expirable к вашей модели:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Mvdnbrk\EloquentExpirable\Expirable;

 classSubscription 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

Вы также можете изменить название поля, в котором хранится expires_at путем изменения значения в константе EXPIRES_AT, либо переопределив метод в своей модели getExpiresAtColumn

class Subscription extends Model
{
    use Expirable;

    const EXPIRES_AT = 'ends_at';
}
... а в миграции указать свое имя поля
$table->expires('ends_at');
$table->dropExpires('ends_at);

Время жизни модели TTL можно установить в секундах

$subscription->expires_at = 600;

Либо указать в качестве \Datetime / Carbon объекта

$subscription->expires_at = now()->addMinutes(10);

Вы можете отменить срок жизни модели установив нулевое или отрицательное значение. Либо использовать метод 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();

Рейтинг
( 1 оценка, среднее 5 из 5 )
Maxyc Webber/ автор статьи
Мне 35 лет. Опыт профессиональной разработки 15 лет. Занимаюсь разработкой и поддержкой корпоративных систем автоматизации бизнеса, а также высоконагруженными проектами. Мне нравится решать нестандартные проблемы бизнеса. Имею опыт формирования команд под проект, налаживания процесса разработки, коммуникации программистов и заказчиков. Есть опыт работы с зарубежными заказчиками (ОАЭ, Польша, Германия, Швейцария).
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.