从模型返回值


returning the value from model

只是想从我的数据库中获取user_id,并通过Codeigniter将其设置为会话。问题是,当我打印会话时,我可以看到以下结果:

(
  [0] => stdClass Object
   (
     [user_id] => 5
   )
) 

而不是这个

 [user_id] => 5

你能帮我从模型返回值,这样问题就不会发生了。

这是我的模型:
public function get_user_id() {
    $this->db->select('user_id');
    $this->db->from('users');   
    $this->db->where('email',$this->input->post('email'));      
    $query = $this->db->get();
    if ($query->num_rows() == 1) {      
    return $query->result();
    }
    else{
     return false;
    }       
}

这是我的控制器:

$user_id = $this->model_users->get_user_id();
$data = array (     
        'user_id' => $user_id,
        'logged_in' => 1        
              );
$this->session->set_userdata($data);

尝试,row()代替result(),因为您只想检索一行。

public function get_user_id() {
    $this->db->select('user_id');
    $this->db->from('users');   
    $this->db->where('email',$this->input->post('email'));      
    $query = $this->db->get();
    if ($query->num_rows() == 1) {
        $row= $query->row();
        return $row->user_id;
    }
    else{
        return false;
    }       
}

查看查询结果中获取行可用函数的完整列表

注意

仅供您参考,您应该在控制器中读取参数(GET, POST)并传递给模型函数。

因此,您的完整代码将与以下相同: 控制器

$email=$this->input->post('email');
$user_id = $this->model_users->get_user_id($email);
$data = array (     
        'user_id' => $user_id,
        'logged_in' => 1        
        );
$this->session->set_userdata($data);

public function get_user_id($email) {
    $this->db->select('user_id');
    $this->db->from('users');   
    $this->db->where('email',$email);      
    $query = $this->db->get();
    if ($query->num_rows() == 1) {
        $row= $query->row();
        return $row->user_id;
    }
    else{
        return false;
    }       
}

除了row(),还有其他方法可以显示结果,您可以使用result_array()。它生成数组结果。

public function get_user_id() {
    $this->db->select('user_id');
    $this->db->from('users');   
    $this->db->where('email',$this->input->post('email'));      
    $query = $this->db->get();
    if ($query->num_rows() == 1) {
        $row= $query->result_array();
        return $row['user_id'];
    }
    else{
        return false;
    }       
}

更多信息,请参见https://ellislab.com/codeigniter/user-guide/database/results.html