我正在尝试删除Doctrine 2中的ManyToMany关系。我有两个实体 - User
和TargetGroup
。
在我的User
实体中:
/**
* @ORM\ManyToMany(targetEntity="TargetGroup", inversedBy="users")
*/
private $targetGroups;
在我的TargetGroup
实体中:
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="targetGroups")
*/
private $users;
我想打电话:
$user->removeTargetGroup($targetGroup);
$targetGroup->removeUser($user);
$em->persist($user);
$em->persist($targetGroup);
$em->flush();
使用的两种方法是:
public function removeTargetGroup(Path To Bundle $targetGroups)
{
$this->targetGroups->removeElement($targetGroups);
}
public function removeUser(Path To Bundle $users)
{
$this->users->removeElement($users);
}
它没有错误,但它也没有执行任何删除查询。
有什么建议吗?
答案 0 :(得分:3)
在您的案例中查看Doctrine cascade property,分离。
如果您在两个cascade={"detach"}
注释上设置ManyToMany
,则可以保留交叉记录。