Автоматически сгенерированное уникальное поле в сущности Doctrine2

У меня есть сущность Doctrine2 с двумя полями, именем и URL. Я хочу создать поле URL автоматически в соответствии с полем имени.

Например, имя "Джон Доу" будет генерировать URL "Джон Доу"

Я реализовал генерацию поля URL в имени сеттера:

public function setName($name) {
  $this->name = $name;
  $this->url = UrlGenerator::generate($name);      
}

Я хочу, чтобы поле URL было уникальным, но не поле имени. Проблема в том, что делать, когда два имени преобразуются в один и тот же URL.

Например, имя "Джон Доу" => URL "Джон Доу", "Джон Доу" => URL "Джон Доу"

Я хочу добавить номер (например, идентификатор, сгенерированный БД сущности) в конец поля URL в случае, если URL уже существует в БД, но я не знаю, как реализовать это в сущности. Во-первых, я не могу использовать диспетчер сущностей в классе сущностей для проверки столкновения. Вторая проблема заключается в том, что я не знаю следующий сгенерированный идентификатор до того, как сущность будет сохранена в БД, и она не может быть сохранена, если ее URL сталкивается с существующим элементом.

Спасибо за помощь.

0 ответов

Другие вопросы по тегам