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