Doctrine orm Doctrine2实体中自动生成的唯一字段

Doctrine orm Doctrine2实体中自动生成的唯一字段,doctrine-orm,uniqueidentifier,Doctrine Orm,Uniqueidentifier,我有一个Doctrine2实体,有两个字段:name和URL。我想根据名称字段自动生成URL字段 例如,名称“John Doe”将生成URL“John Doe” 我已经在name setter中实现了URL字段的生成: public function setName($name) { $this->name = $name; $this->url = UrlGenerator::generate($name); } 我希望URL字段是唯一的,但不是名称字段。问题

我有一个Doctrine2实体,有两个字段:name和URL。我想根据名称字段自动生成URL字段

例如,名称“John Doe”将生成URL“John Doe”

我已经在name setter中实现了URL字段的生成:

public function setName($name) {
  $this->name = $name;
  $this->url = UrlGenerator::generate($name);      
}
我希望URL字段是唯一的,但不是名称字段。问题是,当两个名称转换为同一URL时,该怎么办

例如,名称“John Doe”=>URL“John Doe”,“John Doe”=>URL“John Doe”

我想在URL字段的末尾添加数字(例如实体DB生成的id),以防URL已经存在于DB中,但我不知道如何在实体中实现这一点。首先,我不能在实体类中使用实体管理器来检查冲突。第二个问题是,在实体持久化到DB之前,我不知道下一个生成的id,如果它的URL与现有项冲突,则无法持久化该实体


谢谢您的帮助。

如果数字值不相关(只是询问),使用time()的输出是否可以接受?比如“约翰·多伊-”。时间()。只有在完全相同的时间内创建了两个同名的实体(在绝大多数情况下这应该是奇数),才会重复这个过程。这个数字不应该太大,因为我想将它用作SEF URL。