Автоматически сгенерированное уникальное поле в сущности 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 сталкивается с существующим элементом.
Спасибо за помощь.