と の 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: flush
2 回コールできることはわかっていますが、それは悪い考えです。