我直接在表格中为每个用户提供角色。
问题是,每当我尝试登录时,它都会抛出错误“在非对象上调用成员函数toArray()”。
如果我将GetRoles()更改为return array('ROLE_USER');
它正常工作。但我无法从我的数据库中检索该值。
这是我的用户实体
/**
* @ORM\Entity(repositoryClass="xxx\yyyBundle\Entity\UserRepository")
* @ORM\Table(name="users")
*/
class User implements UserInterface, \Serializable
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=25, unique=true)
*/
private $username;
/**
* @ORM\Column(type="string", length=32)
*/
private $salt;
/**
* @ORM\Column(type="string", length=40)
*/
private $password;
/**
* @ORM\Column(name="is_active", type="boolean")
*/
private $isActive;
/**
* @orm\Column(type="string", length=20)
*/
private $roles;
这适用于GetRoles()函数
/**
* @inheritDoc
*/
public function getRoles()
{
return $this->roles->toArray();
}
答案 0 :(得分:0)
您的角色属性具有字符串类型(查看注释)。所以你不能调用它的方法 toArray (错误信息说的是什么)。 只需编写 getRoles 方法,如下所示:
public function getRoles()
{
return array($this->roles);
}