从数据库获取权限数据

时间:2013-10-29 23:00:04

标签: codeigniter grocery-crud

我在Webapp上做一个简单的权限系统时遇到问题。我的数据库有一个名为“usuario”的表,其中包含有关系统用户的信息。其中一列称为“privilegio”,管理员的值为“0”,普通用户的值为1。管理员可以在系统上添加和编辑用户。我试图采取这种行为查询我的数据库与已登录用户的鳕鱼并获得其权限。如果用户不在管理员组(privilegio = 1)上,则将取消设置添加/编辑/删除按钮。

public function usuario() {
if($this->session->userdata('logged')){ 
  $crud = new grocery_CRUD(); 
  $crud->set_subject("Usuário"); 
  $crud->set_theme('datatables'); 
  $crud->set_table("usuario"); 
  (...) 
  $crud->field_type('privilegio','dropdown',array('0'=>'Administrador','1'=>'Usuario'));
  (...) 
  $this->db->select('privilegio');
  $this->db->get('usuario'); 
  $result = $this->db->where('cod_func',$this->session->userdata('cod_func')); 
  if(!$result){ 
     $crud->unset_add(); 
     $crud->unset_edit(); 
     $crud->unset_delete(); 
  }
(...)

问题(和问题)是此代码仅列出登录的用户,而不是已在系统上注册并存储在“usuario”表中的其他用户。我想知道这个列表是由我的查询做出的(我想要的不是什么行为)我希望你能解开我的疑问。抱歉我的英语不好。

谢谢!

1 个答案:

答案 0 :(得分:0)

您在使用有效记录功能时遇到问题......

使用功能时

$this->db->get('usuario');

这转换为查询:

SELECT * FROM usuario

因此,请尝试将代码更改为以下内容:

$this->db->select('privilegio');
$this->db->from('usuario');
$this->db->where('cod_func',$this->session->userdata('cod_func')); 
$this->db->limit(1); //You're only expecting one result
$result = $this->db->get(); // Save the result to the variable result

//为评论编辑,例如

$result = $result->first_row('array'); //Here I'm fetching only the first row into an array
$privilegio = $result['privilegio']; //Im saving the result from the query in the variable $privilegio

这转换为:

SELECT priviliegio FROM usuario WHERE cod_func = 'some_value' LIMIT 1;

然后你可以用$ result变量做任何你想做的事情,请参考文档看看你能做些什么......

Generating Query Results