bentools/doctrine-ulid

Doctrine IDs 对 ULID (Universally Unique Lexicographically Sortable Identifier) 的支持

1.2 2021-01-23 15:25 UTC

This package is auto-updated.

Last update: 2024-08-25 02:12:50 UTC


README

Latest Stable Version License Build Status CoverageQuality Score Total Downloads

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.