kinulab/sequence-generator-bundle

安装: 98

依赖: 0

建议者: 0

安全: 0

星星: 0

关注者: 3

分支: 1

开放问题: 1

类型:symfony-bundle

v1.0.4 2023-01-17 05:27 UTC

This package is auto-updated.

Last update: 2024-09-17 08:50:04 UTC


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