bentools / doctrine-ulid
Doctrine IDs 对 ULID (Universally Unique Lexicographically Sortable Identifier) 的支持
1.2
2021-01-23 15:25 UTC
Requires
- php: >=7.3
- robinvdvleuten/ulid: ~5.0
Requires (Dev)
- doctrine/orm: ^2.3
- matthiasnoback/doctrine-orm-test-service-provider: ^3.0
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.5
- symfony/var-dumper: ^4.2
This package is auto-updated.
Last update: 2024-08-25 02:12:50 UTC
README
Doctrine ULID 生成器
这个小库在 Doctrine 中添加了对 ULID 的支持。
ULIDs 类似于可以按字典顺序排序的 UUID,而且它们的占用空间更小(26 个 ANSI 字符,而 UUID 是 36 个字符);
此包将 robinvdvleuten/ulid 集成为 CustomIdGenerator
。
安装
composer require bentools/doctrine-ulid
使用方法
使用提供的类作为自定义 ID 生成器
use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity() */ class Foo { /** * @var string * * @ORM\Id() * @ORM\GeneratedValue(strategy="CUSTOM") * @ORM\CustomIdGenerator(class="\BenTools\ULIDGenerator") * @ORM\Column(type="string", length=26) */ private $id; // ... }
或者使用以下特性
use Doctrine\ORM\Mapping as ORM; use BenTools\GeneratedULIDTrait; /** * @ORM\Entity() */ class Foo { use GeneratedULIDTrait; // ... }
如果您想自己设置 ULID(这种方式可以客户端生成),请使用 EditableULIDTrait
,它将公开一个 setId()
方法
use Doctrine\ORM\Mapping as ORM; use BenTools\EditableULIDTrait; /** * @ORM\Entity() * @ORM\HasLifecycleCallbacks() */ class Foo { use EditableULIDTrait; // ... }
- 如果没有调用
setId()
,则在持久化时将自动生成 ULID。 - 不要忘记在您的实体上方添加
@HasLifecycleCallbacks()
注解,以便此行为正常工作。
测试
./vendor/bin/phpunit
许可证
MIT.