我有2个具有多对多关系的人:用户和标签。
class User{
/**
* @ORM\ManyToMany(targetEntity="Tag", mappedBy="userList")
*/
private $tagList;
}
class Tag{
/**
* @ORM\ManyToMany(targetEntity="User", inversedBy="tagList")
* @ORM\JoinTable(name="tags_users")
*/
private $userList;
}
问题
当我清除用户的tagList
时,我还想从删除的代码userList
中移除用户。
$user->getTagList()->clear();
但是在JoinTable tags_users
中,我仍然可以看到标记用户关联
答案 0 :(得分:1)
我认为您正在尝试进行拥有和反向关联,但只更新一方。
你也应该打电话给
$tag->removeUser($user);
您可以向用户实体添加一个功能以清除标记 p>
class User
{
function clearTaglist()
{
foreach ($this->tagList as $tag) {
$tag->removeUser($this);
}
$this->tagList->clear();
}
}
class Tag {
public function removeUser($user)
{
$this->userList->removeElement($user);
}
}
干杯