関連付けの削除にご協力をお願いします。
私のUser
エンティティ:
class User
{
...
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="following")
**/
private $followers;
/**
* @ORM\ManyToMany(targetEntity="User", inversedBy="followers")
* @ORM\JoinTable(name="friends",
* joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="friend_user_id", referencedColumnName="id")}
* )
**/
private $following;
私には2つのアクションがあります:
プロフィール:フォロー
// followAction
$entityManager = $this->getDoctrine()->getEntityManager();
$me->addFollowing($targetUser);
$targetUser->addFollower($me);
$entityManager->persist($me);
$entityManager->persist($targetUser);
$entityManager->flush();
プロフィール:フォロー解除
$entityManager = $this->getDoctrine()->getEntityManager();
$me->removeFollowing($targetUser);
$targetUser->removeFollower($me);
$entityManager->persist($me);
$entityManager->persist($targetUser);
$entityManager->flush();
以下のプロセスは適切に機能しており、適切なレコードfriends
テーブルが表示されます。
しかし、ユーザーのフォローを解除しようとすると、例外が発生します:
パラメータ {"1":2,"2":10} を使用して「INSERT INTO friends (user_id, friend_user_id) VALUES (?, ?)」を実行中に例外が発生しました:
SQLSTATE [23000]: 整合性制約違反: 1062 キー 'PRIMARY' のエントリ '2-10' が重複しています
私は何を間違っていますか?私はpersist
それの有無にかかわらず試しましたが、同じです。多分関連設定の何か?