0

我有一个包含两个字段名称和 URL 的 Doctrine2 实体。我想根据名称字段自动生成 URL 字段。

例如名称“John Doe”将生成 URL“john-doe”

我已经在名称设置器中实现了 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 中,我想在 URL 字段的末尾添加数字(例如实体 DB 生成的 id),但我不知道如何在实体中实现这一点。起初,我不能在实体类中使用实体管理器来检查碰撞。第二个问题是,在实体被持久化到数据库之前我不知道下一个生成的 id,如果它的 URL 与现有项目冲突,它就不能持久化。

感谢帮助。

4

0 回答 0