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 returnsbooleantimeToLive()returns number of seconds left on models life, could be minus if has expired already! returnsfalseif not applicable.reviveExpired($numberOfSeconds=null)if model has expired you can then revive it by using this function and supplying$numberOfSecondsrevival period starting fromnow(). If$numberOfSecondsis not supplied then will default back to the value set inexpirable.phpin config folder, if set! Otherwise it will not do anything and returnsfalse.- Model has
nullexpiry 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 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 1.14k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 9
- 点击次数: 5
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-03-09