createnl / expires by createnl

Set expiration date for database records, like future deleted at columns
3,761
2
2
Package Data
Maintainer Username: createnl
Maintainer Contact: alex@create.nl (Alex Lisenkov)
Package Create Date: 2017-08-01
Package Last Update: 2017-08-03
Language: PHP
License: MIT
Last Refreshed: 2024-11-23 03:05:02
Package Statistics
Total Downloads: 3,761
Monthly Downloads: 0
Daily Downloads: 0
Total Stars: 2
Total Watchers: 2
Total Forks: 0
Total Open Issues: 0

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.