名前と URL の 2 つのフィールドを持つ Doctrine2 エンティティがあります。名前フィールドに応じて URL フィールドを自動生成したい。
たとえば、名前「John Doe」は URL「john-doe」を生成します。
名前セッターに URL フィールドの生成を実装しました。
public function setName($name) {
$this->name = $name;
$this->url = UrlGenerator::generate($name);
}
URL フィールドは一意である必要がありますが、名前フィールドは一意ではありません。問題は、2 つの名前が同じ URL に変換された場合にどうするかです。
例: 名前 "John Doe" => URL "john-doe", "john doe" => URL "john-doe"
URL が DB に既に存在する場合に備えて、URL フィールドの末尾に番号 (エンティティ DB で生成された ID など) を追加したいのですが、これをエンティティに実装する方法がわかりません。最初は、エンティティ クラスでエンティティ マネージャを使用して衝突をチェックすることはできません。2 番目の問題は、エンティティが DB に永続化される前に次に生成される ID がわからず、URL が既存のアイテムと衝突すると永続化できないことです。
手伝ってくれてありがとう。