manyToMany导致重复输入错误

Reu*_*ven 5 php symfony doctrine-orm

我有一个用户实体.那些用户可以在一起成为朋友.所以我定义了一个自引用manyToMany单向关联(因为总是互惠是友谊,对吧?).

YML中的一个用户实体

manyToMany:
    friendList:
    targetEntity: User
    joinTable:
      name: user_friend
      joinColumns:
        user_id:
          referencedColumnName: id
      inverseJoinColumns:
        friend_id:
          referencedColumnName: id
    cascade: [persist]
Run Code Online (Sandbox Code Playgroud)

当我打电话$user->addFriendList($friend),在坚持和同花顺之后,我有PDOException:

SQLSTATE [23000]:完整性约束违规:1062重复条目'1-2'为fey'PRIMARY'

当我签入日志时,我可以看到该学说正在尝试两次执行相同的插入查询.

为了您的信息,我的addFriendList功能

public function addFriendList(User $friend)
{
    if (!$this->friendList->contains($friend)) {
        $this->friendList[] = $friend;
        $friend->addFriendList($this);
    }
}
Run Code Online (Sandbox Code Playgroud)

我错在哪里?

Reu*_*ven 5

我终于找到了解决问题的方法.但是,我仍然不知道它是否是Doctrine2缺陷,或者它是否按设计工作.

我需要在添加好友之前坚持我的用户并刷新.

所以我的工作代码是:

$em->persist($user);
$em-flush();

$user->addFriendList($friend);
$em->persist($user);
$em->flush();
Run Code Online (Sandbox Code Playgroud)