Skip to content

createnl/expires

Repository files navigation

Expires

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

A package to add expiration date to database records.

Install

Via Composer

$ composer require createnl/expires

Usage

Your migration

$table->dateTime('expires_at')->nullable()->default(null);

Your model

class Model extends Eloquent
{
    use Createnl\Expires\Expirable
    
    /**
     * Indicates if the model should set an auto expire
     *
     * @var bool
     */
    protected static $autoExpire = true;
     
    /**
     * Indicates if the model should reset the expiration date on model update
     *
     * @var bool
     */
    protected static $autoExtend = true;
    
    /**
     * The amount of interval to be added to the
     * Please see ISO_8601 durations for correct markups
     *
     * @var string (\DateInterval)
     */
    protected static $autoExpireDate = 'P5Y';
}

Methods

// Get records with expired
$model->withExpired() : Builder;
 
// Get only expired records
$model->onlyExpired() : Builder;
 
// Update expiration date
$model->setExpiration(Carbon $date) : Model;
 
// Remove expiration date
$model->unExpire() : Model;
 
// Check if record is expired
$model->isExpired() : bool;
 
// Get carbon object of expiration date
$model->expiresAt() :? Carbon;
 
// Extend expiration by defined interval
$model->extendExpiration() : Model;
 
// Disable automatic setting of expiration date
Model::disableExpiring() : void;
 
// Enable automatic setting of expiration date
Model::enableExpiring() : void;

Custom expiration date logic

/**
 * @override
 * Get Carbon object of parsed expiration date.
 *
 * @return Carbon
 */
public function expirationDate() : Carbon
{
    // @todo: Manipulate expiration date
    $interval = new \DateInterval(self::$autoExpireDate);
    return $this->freshTimestamp()->add($interval);
}

Change log

Please see CHANGELOG for more information on what has changed recently.

Testing

$ composer test

Contributing

Please see CONTRIBUTING and CONDUCT for details.

Security

If you discover any security related issues, please email alex@create.nl instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

About

Laravel eloquent expiration package

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages