1

と の 2 つのエンティティがあるNewsとしTagます。それらは 1 対多の関係にあります。また、タグ テーブルに一意の制約があります('news_id', 'name')

今、私の現在の状態は次のとおりです。

tags
---------------------
id | news_id | tag
---------------------
1  |       1 | world
2  |       1 | event

私が行った場合:

$em->remove($tag2);
$em->persist(new Tag($tag2->getNews(), 'event'));

Integrity constraint violation: 1062 Duplicate entry古いエンティティを削除する前に教義が挿入しようとするためです。更新/削除しても同じことが起こります。最初に古いエンティティを削除するよう教義に指示することは可能ですか? または、より良い解決策はありますか?

もう一つの例:

簡単な表:

tags
---------------------
id | tag
---------------------
1  | world
2  | event

カラムにはUNIQUE制約が設定されてtagいます。

今私がやります:

$tags = $em->getRepository('Tag')->findAll();
$tempName = $tags[0]->getName();
$tags[0]->setName($tags[1]->getName());
$tags[1]->setName($tempName);

最初のタグを「イベント」値で更新しようとして、すでに重複しているため、同じエラーが発生します。

PS: flush2 回コールできることはわかっていますが、それは悪い考えです。

4

1 に答える 1