subiabre/doctrine-snowflakes

实现雪花算法的自定义ID生成器

2.0 2023-11-13 19:04 UTC

This package is auto-updated.

Last update: 2024-09-23 23:39:16 UTC


README

Doctrine的ID生成器,实现了雪花算法。

安装

$ composer require subiabre/doctrine-snowflakes

使用方法

在您的实体类中

#[ORM\Id()]
#[ORM\GeneratedValue(strategy: "CUSTOM")]
#[ORM\CustomIdGenerator(class: SnowflakeGenerator::class)]
#[ORM\Column(type: Types::BIGINT]
private string $id;

请考虑PHP没有合适的bigint数据类型。由于这个限制,doctrine-snowflake ID应该作为string使用。

public function getId(): string

测试

此包包含使用PHPUnit库的单元测试。运行测试使用

./vendor/bin/phpunit

默认测试用例在10个批次中进行并发和唯一性测试,每个批次300个ID,或者您可以使用以下命令提供任何批次大小

BATCH_SIZE=1000 ./vendor/bin/phpunit