生成UUID在构造函数中或通过UuidGenerator注解(Generate Uuid manua

2019-11-05 06:42发布

我切换到拉姆齐\ UUID ,不知道什么是生成的UUID预期的方式。

无论是作为示出了与一个anntoation实施例:

/**
 * @var UuidInterface
 *
 * @ORM\Id
 * @ORM\Column(type="uuid", unique=true)
 * @ORM\GeneratedValue(strategy="CUSTOM")
 * @ORM\CustomIdGenerator(class="Ramsey\Uuid\Doctrine\UuidGenerator")
 */
private $id;


public function __construct() {
}

手动在构造函数:

/**
 * @var UuidInterface
 *
 * @ORM\Id
 * @ORM\Column(type="uuid", unique=true)
 */
private $id;


public function __construct() {
    $this->id = Uuid::uuid4();
}

在第二种情况下,我不知道如何在现有的ID会水化过程中设置。 我添加了一个公共的setter用于测试目的,但它不叫! 在我的理解,从数据库加载时,将创建一个新的对象,它执行的构造,因此设置了一个新的UUID。 然后不知何故,此UUID必须通过从数据库记录的一个替代。 我缺少的东西吗?

然而,最大优点是ID 立即可使用注释时,由于代打电话时只发生不见了$em->persist(...)

还有一些变种了那里的构造函数采用可选的UUID参数,并使用它,如果不为空。

文章来源: Generate Uuid manually in constructor or via UuidGenerator annotation