chanondb / sequence-bundle
序列实现是从indra分叉的
v0.2.4
2023-02-06 04:29 UTC
Requires
- php: ^7.1.3 || ^8.0
- doctrine/doctrine-bundle: ^1.6.10 || ^2.0
- doctrine/orm: ^2.5.11
- symfony/config: ^3.4 || ^4.0 || ^5.0
- symfony/console: ^3.4||^4.0 || ^5.0
- symfony/dependency-injection: ^3.4 || ^4.0 || ^5.0
Requires (Dev)
- phpunit/phpunit: ^7.5.2 || ^8.0
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 许可证的约束。请参阅完整的 许可证。