自定义 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 许可协议进行许可。