guava / laravel-sequence
1.0.1
2024-09-05 17:40 UTC
Requires
- php: ^8.1
- laravel/framework: ^10.0|^11.0
Requires (Dev)
- nunomaduro/larastan: ^2.0
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^9.5
README
使用模式生成序列号(例如,用于发票号码)
特性
- 易于集成
- 支持多个模式占位符
- 支持三种最常见的重置频率
- 根据重置频率自动创建新的序号
安装
composer require nextgen-tech/laravel-sequence
使用方法
use Carbon\Carbon; use Guava\Sequence\Enums\ResetFrequency; use Guava\Sequence\Models\SequenceRule; use Guava\Sequence\SequenceFactory; /** * Create new sequence rule. It needs to be done only once. */ SequenceRule::create([ 'type' => 'invoice', 'pattern' => '{number}/COMPANY/{year}', 'reset_frequency' => ResetFrequency::YEARLY, ]); /** * Make sequence factory via container or DI. */ $factory = app(SequenceFactory::class); /** * Create sequence by passing sequence type and date (e.g. issue date of invoice). */ $sequence = $factory->create( 'invoice', Carbon::createFromFormat('Y-m-d', '2021-06-01') ); /** * Public methods of sequence. */ $ordinal = $sequence->getOrdinalNumber(); // e.g. 21 $number = $sequence->getNumber(); // e.g. 21/COMPANY/2021 $pattern = $sequence->getPattern(); // e.g. {number}/COMPANY/{year} /** * After use of generated number, manual increment of ordinal number is required. */ $sequence->increment();
重置频率
Sequences 支持 three 种最常用的重置频率。创建新的序列规则时,应使用 \Guava\Sequence\Enums\ResetFrequency
类。
ResetFrequency::YEARLY
- 在新年的开始重置序号ResetFrequency::MONTHLY
- 在新月的开始重置序号ResetFrequency::DAILY
- 在新日的开始重置序号
模式占位符
致谢
本包是基于 nextgen-tech/laravel-sequence 的分支。
- 感谢原作者 Krzysztof Grabania