使用codeigniter

时间:2017-04-15 18:04:18

标签: php mysql codeigniter codeigniter-3

任何人都可以通过以下代码段帮助我归档检查角色。我想要达到的目的是能够根据指定的角色对用户进行身份验证 in_array()不适用于返回的数组。 返回的数组是:

array (size=2) 0 => object(stdClass)[40] public 'role' => string '2' (length=1) 1 => object(stdClass)[41] public 'role' => string '5' (length=1)

我感谢任何帮助。感谢

DB TABLE
id user_id role
1  4       2
2  4       5

模型

//get logged user roles
public function user_roles($id){
    $userDB  = $this->quickDB();
    $userdata = $userDB->query("SELECT role
                            FROM role_assignment
                            WHERE user_id = $id
                            ")->result();
    $userDB->close();
    return ($userdata);
}

控制器:

public function user_roles()
{
    $roles=$this->Master_model->user_roles('4');

    if (in_array("1", $roles)) 
    {
        echo "Admin<br>";
    }
    if (in_array("2", $roles)) 
    {
        echo "Teacher<br>";
    }
    if (in_array("5", $roles)) 
    {
        echo "Academic<br>";
    }
}

1 个答案:

答案 0 :(得分:0)

代码中的

in_array无效。您需要进行两项更改。

首先 - 将您的数据库输出更改为数组,现在您将获得objetct:

$userdata = $userDB->query("SELECT role
                        FROM role_assignment
                        WHERE user_id = $id
                        ")->result_array();

第二步 - 通过DB结果迭代并返回修改后的数组:

$user_roles = array();
foreach ($userdata as $val) {
    $user_roles[] = $val['role'];
}
return $user_roles;

两个更改都在模型中的user_roles函数内。