1

BjyAuthorize 修改 User 实体并提供 addRole() 方法。这接受一个角色对象并填充 user_role_linker_table

将角色添加到用户后如何将其删除?

关联在用户中设置:

/**
     * @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;
4

2 回答 2

0

在我看来很好。只想补充一点,您应该首先检查角色是否包含您要删除的角色。

比如这样:

public function removeRole($role)
{
    if (!$this->roles->contains($role))
    {
         return;
    }
    $this->roles->removeElement($role);
}
于 2015-10-30T13:05:36.303 回答
0

经过数小时的努力,我想出了以下解决方案:

$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-09-06T20:00:35.593 回答