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)
我错在哪里?
我终于找到了解决问题的方法.但是,我仍然不知道它是否是Doctrine2缺陷,或者它是否按设计工作.
我需要在添加好友之前坚持我的用户并刷新.
所以我的工作代码是:
$em->persist($user);
$em-flush();
$user->addFriendList($friend);
$em->persist($user);
$em->flush();
Run Code Online (Sandbox Code Playgroud)