0

名前と 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 が既存のアイテムと衝突すると永続化できないことです。

手伝ってくれてありがとう。

4

0 に答える 0