BjyAuthorize修改用户实体并提供addRole()方法。这将接受一个角色对象并填充user_role_linker_table
将角色添加到用户后,如何删除该角色?
关联在User中设置:
/**
* @var \Doctrine\Common\Collections\Collection
* @ORM\ManyToMany(targetEntity="Application\Entity\Role")
* @ORM\JoinTable(name="user_role_linker",
* joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="role_id", referencedColumnName="id")}
* )
*/
protected $roles;发布于 2015-09-07 04:00:36
经过几个小时的努力,我想出了以下解决方案:
$userDetails = $em->getRepository('Application\Entity\UserDetails')->findOneBy(['id' => $data['user-details-id']]);
$user = $userDetails->getUser();
$roleRepo = $em->getRepository('Application\Entity\Role');
$roleResult = $roleRepo->findOneBy(['id' => $id]); //$id is the role to delete
$user->removeRole($roleResult);
$em->merge($user);
$em->flush();在用户实体中,我添加了方法:
public function removeRole($role)
{
return $this->roles->removeElement($role);
}不确定这是否是BjyAuthorize的作者想要的方法,但它对我来说是有效的……
发布于 2015-10-30 21:05:36
我觉得挺不错的。我只想补充说,您应该首先检查角色是否包含您想要删除的角色。
如下所示:
public function removeRole($role)
{
if (!$this->roles->contains($role))
{
return;
}
$this->roles->removeElement($role);
}https://stackoverflow.com/questions/32423510
复制相似问题