chanondb/sequence-bundle

序列实现是从indra分叉的

安装: 17

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分叉: 5

类型:symfony-bundle

v0.2.4 2023-02-06 04:29 UTC

This package is auto-updated.

Last update: 2024-09-06 07:53:21 UTC


README

文档

安装

步骤 1:下载捆绑包

如果您的项目已经使用 Symfony Flex,请执行此命令以自动下载、注册和配置捆绑包:

composer require indragunawan/sequence-bundle

如果您不使用 Symfony Flex 进行安装,首先使用 composer 添加捆绑包,然后通过将 new Indragunawan\SequenceBundle\IndragunawanSequenceBundle() 添加到项目 app/AppKernel.php 文件中已注册捆绑包列表来启用捆绑包

步骤 2:创建您的序列类

<?php
// src/App/Entity/Sequence.php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Indragunawan\SequenceBundle\Model\Sequence as BaseSequence;

/**
* @ORM\Entity(repositoryClass="App\Repository\SequenceRepository")
*/
class Sequence extends BaseSequence
{
    /**
    * @ORM\Id()
    * @ORM\GeneratedValue(strategy="IDENTITY")
    * @ORM\Column(type="integer")
    */
    private $id;

    public function getId()
    {
        return $this->id;
    }
}

步骤 3:配置捆绑包

# app/config/config.yml
indragunawan_sequence:
orm:
    class: App\Entity\Sequence
    manager_name: default #if not set then the default value is 'default'

步骤 4:更新您的数据库模式

$ php bin/console doctrine:schema:update --force

使用

手动将序列插入到数据库中的序列表中

格式

有关格式,请参阅下表

保留占位符

  • NUMBER(包含序列计数器的整数)。
  • php 日期格式 查看这里
  • Rj, Rn, Ry, RY, Rg 为日期格式的罗马数字。

示例

另一个示例可以在 Tests/Utils/PlaceholderReplacerTest.php 中查看

序列管理器

注意:序列管理器只能在 doctrine 事务内使用

在控制器中调用

// use Indragunawan\SequenceBundle\Services\SequenceManager
$sequenceManager = $this->get(SequenceManager::class);
$em->transactional(function () use ($entity) {
  $entity->setSeqNum($sequenceManager->getNextValue('sequence_name'));
});

在事件监听器中调用

// use Indragunawan\SequenceBundle\Services\SequenceManagerInterface
// Inject SequenceManagerInterface on constructor

public function prePersist(LifecycleEventArgs $args)
{
    $entity = $args->getObject();
    if ($entity instanceof EntityClass) {
        $args->getObjectManager()->transactional(function () use ($entity) {
            $entity->setSeqNum($this->sequenceManager->getNextValue('sequence_name'));
        });
    }
}

重置计数器

$ php bin/console indragunawan:sequence:reset-counter sequence_name

您可以将此命令放入 Crontab 以定期重新启动计数器。

许可证

此捆绑包受 MIT 许可证的约束。请参阅完整的 许可证