kinulab / sequence-generator-bundle
v1.0.4
2023-01-17 05:27 UTC
Requires
- php: ^7.1.0||^8.0
- doctrine/doctrine-bundle: ^2.0
- doctrine/orm: ^2.5||^3.0
- symfony/property-access: ^3.4||^4.0
Requires (Dev)
- symfony/phpunit-bridge: ^4.1
- symfony/var-dumper: ^4.1
README
此包的目的是简化对可配置序列的使用,以便生成代码。例如,它可以轻松生成类似于 FC2018-0001
的代码类型发票参考。
此包仅适用于PostgreSQL数据库
安装
composer require kinulab/sequence-generator-bundle
在 app/AppKernel.php
中添加
public function registerBundles() { $bundles = array( ... new Kinulab\SequenceGeneratorBundle\SequenceGeneratorBundle(), ); }
使用方法
创建新的序列
use Kinulab\SequenceGeneratorBundle\Entity\CustomSequence; use Kinulab\SequenceGeneratorBundle\Generator\SequenceGenerator; // Enregistrement d'une nouvelle séquence $sequence = new CustomSequence(); $sequence->setLibelle("Séquence des factures"); $sequence->setSequenceName("facture_seq"); $sequence->setIncrementBy(1); $sequence->setIncrementLength(5); $sequence->setPrefix('FC'); $sequence->setRestartYearly(true); $em = $doctrine->getManager(); $em->persist($sequence); $em->flush(); // Initialisation de la séquence $generator = $container->get(SequenceGenerator::class); $generator->initializeSequence($sequence); // Utilisation echo $generator->getNextVal('facture_seq'); // FC00001 echo $generator->getNextVal('facture_seq'); // FC00002 // On change le pas d'incrémentation $sequence->setIncrementBy(2); $generator->initializeSequence($sequence); echo $generator->getNextVal('facture_seq'); // FC00004 echo $generator->getNextVal('facture_seq'); // FC00006
使用标记
可以包含序列的前缀或后缀,一个或多个标记。标记的格式为 %<标记名称>%
。
可用的标记有
示例
$sequence->setPrefix('FC%year%-%month%-'); echo $generator->getNextVal('facture_seq'); // FC2018-08-*****
还可以包含依赖于方法 getNextVal
的第二个参数的对象的标记。
示例
$facture = new stdClass(); $facture->codeClient = 'ABC'; $facture->userName = 'homer'; $sequence->setPrefix('FC-%object.codeClient%-'); $sequence->setSuffix('-%object.userName%'); echo $generator->getNextVal('facture_seq', $facture); // FC-ABC-*****-homer