yarob/laravel-expirable 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

yarob/laravel-expirable

Composer 安装命令:

composer require yarob/laravel-expirable

包简介

Laravel 5.0+ package to add expirable trait to eloquent models

README 文档

README

Add expiring feature to Eloquent models in Laravel 5.

Background

This has been developed to simplify adding expirable feature to any eloquent model on your laravel project.

Installation

To install the package via Composer:

$ composer require yarob/laravel-expirable

Then, update config/app.php by adding an entry for the service provider.

'providers' => [
    // ...
    Yarob\LaravelExpirable\ServiceProvider::class,
];

Finally, via terminal, publish the default configuration file (if you need to, see below):

php artisan vendor:publish --provider="Yarob\LaravelExpirable\ServiceProvider"

Updating your Eloquent Models

Your models can now use the Expirable trait. You must also add expire_at to your $dates array in the model as shown in the example below

use Yarob\LaravelExpirable\Expirable;

class User extends Model
{
    use Expirable;
    
    /**
     * The attributes that should be mutated to dates.
     *
     * @var array
     */
    protected $dates = [
        'expire_at'
    ];

}

Migration

Your model MUST have column named expire_at in the database to store the expiry date value. You can add this manually via a migration on the intended model $table->timestamp('expire_at')->nullable();.

Usage

There are three basic functions in Expirable trait:

  • hasExpired() to check if model has expired or not returns boolean
  • timeToLive() returns number of seconds left on models life, could be minus if has expired already! returns false if not applicable.
  • reviveExpired($numberOfSeconds=null) if model has expired you can then revive it by using this function and supplying $numberOfSeconds revival period starting from now(). If $numberOfSeconds is not supplied then will default back to the value set in expirable.php in config folder, if set! Otherwise it will not do anything and returns false.
  • Model has null expiry date means a non-expirable model and lives forever, e.g. $user->expire_at = null;

Example:-

$user = App\User::get();

foreach($users as $user) {
		if($user->hasExpired())
		{
			var_dump($user->timeToLive());
			$user->reviveExpired();
			
			var_dump($user->timeToLive());	
		}
		else
		{
		    $user->expire_at = \Carbon\Carbon::now()->addDay(-10);// you can add minus values
            $user->save();
                        
            var_dump($user->timeToLive());	
		}
	}

Querying Expirable Models

Expired models (passed it’s expiry date) will automatically be excluded from query results. For example:-

 $users = App\User::get();

will only gets models that has NOT expired or has null expiry date. Any expired models WILL be auto-excluded.

Including expired Models

You can force expired models to appear in query results using withHasExpiry

$users = App\User::withHasExpiry()->get();

Retrieving Only Expired Models

The onlyHasExpiry method can be used on a relationship query:

$users = App\User::onlyHasExpiry()->get();

This will exclude ONLY null expiry date from results. Please note this will get ALL models that have non null expiry date, regradless of their expiry date.

Retrieving Models has null expiry

The withoutHasExpiry method can be used in this case:

$users = App\User::withoutHasExpiry()->get();

This will bring models that has null expiry date.

Configuration

Configuration is not usually needed, unless you want to set a default revival time to a model(s). A default value of 86400 seconds is set for user model, as an example, but feel free to change that to any value you want. Here is an example configuration:

return [

	/**
	 * Revival Time in seconds used to extend life in expired models
	 */

	'User' => [
		'revival_time' => 24*60*60,
	]
];

Pay attention that Model name in expirable.php is case sensitive! so if you have a foo Model, then

return [
    'foo' => [
    		'revival_time' => 24*60*60,
    	],
];

Copyright and License

laravel-expirable was written by Yarob Al-Taay and is released under the MIT License.

Copyright (c) 2017 Yarob Al-Taay

yarob/laravel-expirable 适用场景与选型建议

yarob/laravel-expirable 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.14k 次下载、GitHub Stars 达 9, 最近一次更新时间为 2017 年 03 月 09 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 yarob/laravel-expirable 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 yarob/laravel-expirable 我们能提供哪些服务?
定制开发 / 二次开发

基于 yarob/laravel-expirable 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 1.14k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 9
  • 点击次数: 5
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 9
  • Watchers: 2
  • Forks: 4
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2017-03-09