然后,您应该希望将角色实体添加到模型 Hice。
你必须知道 Symfony2 也提供对动态角色的支持。您在 API Doc 的 Symfony2 User 规范中有一个getRoles()
方法,您的 User 实体应该实现该方法,这迫使他返回角色。这些角色必须要么实现指定方法的角色接口,该方法通常返回角色名称本身。getRole()
然后,您可以将新创建的角色直接添加到getRoles()
用户方法将返回的用户角色列表中。
这是一个使用注释的示例:第一个角色类
/**
* Role class
*
* @ORM\Entity()
*/
class Role implements RoleInterface, \Serializable
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="userRoles")
*/
private $users;
public function __construct()
{
$this->users = new \Doctrine\Common\Collections\ArrayCollection();
}
public function getRole()
{
return $this->name;
}
}
和用户类
/**
* User
*
* @ORM\Entity()
*/
class User implements UserInterface, \Serializable
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="username", type="string", length=255)
*/
private $username;
/**
* @ORM\ManyToMany(targetEntity="Role", inversedBy="users")
* @ORM\JoinTable(name="user_roles")
*/
private $userRoles;
public function __construct()
{
$this->userRoles = new \Doctrine\Common\Collections\ArrayCollection();
}
public function getRoles()
{
return $this->userRoles->toArray();
}
我跳过了导入和方法来简化方法。
编辑:也有一些关于序列化的知识。正如Sharom 在 github 上评论的那样,您不能序列化角色中的用户,也不能序列化用户中的角色。看看他的帖子,我想你会明白的:)