Symfony原则:删除多个关联

Symfony原则:删除多个关联,symfony,doctrine-orm,Symfony,Doctrine Orm,我有两个具有多对多关系的实体:用户和标记 class User{ /** * @ORM\ManyToMany(targetEntity="Tag", mappedBy="userList") */ private $tagList; } class Tag{ /** * @ORM\ManyToMany(targetEntity="User", inversedBy="tagList") * @ORM\JoinTable(name="tags_

我有两个具有多对多关系的实体:用户和标记

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;
}
问题

当我清除用户的
标记列表
时,我还想从已删除标记的
用户列表
中删除用户

  $user->getTagList()->clear();

然而,在JoinTable
tags\u users
中,我仍然可以看到标记用户关联

我认为您试图建立一个拥有方和反向方关联,但只更新了一方

查看文档@

你也应该称之为

$tag->removeUser($user);
您可以向用户实体添加一个函数来清除标记

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);
    }
}
干杯