跳到内容

自定义 ID 生成器

编辑此页

自定义 ID 生成器是允许实现自定义逻辑来为你的实体生成标识符的类。它们继承自 Doctrine\ORM\Id\AbstractIdGenerator 并在 generate(EntityManager $em, $entity) 方法中实现自定义逻辑。在 Doctrine bundle 2.3 之前,自定义 ID 生成器总是被创建,没有任何构造函数参数。

从 Doctrine bundle 2.3 开始,CustomIdGenerator 属性可以被用来引用任何被标记为 doctrine.id_generator 标签的服务。如果你启用了自动配置(通常是默认情况),Symfony 将在你实现你自己的 ID 生成器时自动添加这个标签。

当使用 Symfony 的 Doctrine bridge 和 Uid 组件 5.3 或更高版本时,提供了两个服务:doctrine.ulid_generator 用于生成 ULID,以及 doctrine.uuid_generator 用于生成 UUID。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// User.php

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 */
class User
{
    #[ORM\Id]
    #[ORM\Column(type: 'uuid')]
    #[ORM\GeneratedValue(strategy: 'CUSTOM')]
    #[ORM\CustomIdGenerator('doctrine.uuid_generator')]
    private $id;

    // ....
}

另请参阅 https://www.doctrine-project.org/projects/doctrine-orm/en/2.8/reference/annotations-reference.html#annref_customidgenerator 以获取关于自定义 ID 生成器的更多信息。

本作品,包括代码示例,根据 Creative Commons BY-SA 3.0 许可协议进行许可。
目录
    版本