GetRoles()直接从数据库中获取值

时间:2014-04-20 04:48:21

标签: symfony

我直接在表格中为每个用户提供角色。

问题是,每当我尝试登录时,它都会抛出错误“在非对象上调用成员函数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();
}

1 个答案:

答案 0 :(得分:0)

您的角色属性具有字符串类型(查看注释)。所以你不能调用它的方法 toArray (错误信息说的是什么)。 只需编写 getRoles 方法,如下所示:

public function getRoles()
{
    return array($this->roles);
}