我切换到拉姆齐\ 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参数,并使用它,如果不为空。