如何将$ Data从CodeIgniter的控制器传递给模型?

时间:2014-12-22 14:47:40

标签: php codeigniter templates undefined

我试图允许用户编辑自己的详细信息。这是我的代码: 控制器:

public function myaccount() {
    if($this->session->userdata('logged_in')) {
        $session_data = $this->session->userdata('logged_in');
        $data['id'] = $session_data['id'];
        $this->load->model('myaccount_model');    
        $this->myaccount_model->get_details($data);
        $this->load->view('head');
        $this->load->view('myaccount', $data);
        $this->load->view('footer');   
    } else {
        redirect('login', 'refresh');
    }
}

型号:

<?php
class Myaccount_model extends CI_Model {

    public function __construct() {
        $this->load->database();
    }

    public function get_details($data) {
        $query = $this->db->get_where('users', array('id' => $id));
        return $query->row_array();
    }
}

它出现了错误:我的account_model上的未定义变量$ id。会话在控制器上创建为:

$data['id'] = $session_data['id'];

那么如何将数据从控制器传递到模型,以便我可以查询数据库并选择与会话ID匹配的用户?感谢

2 个答案:

答案 0 :(得分:1)

使用$data['id'],因为您在控制器中设置了值

public function get_details($data)
{
   $query = $this->db->get_where('users', array('id' => $data['id']));
   return $query->row_array();    
}

为了在视图中回显用户数据,我认为您可以这样做:

$userData = $this->myaccount_model->get_details($data);
$this->load->view('myaccount', $userData);

答案 1 :(得分:0)

你的模型$ id里面没有变量获取详情功能。
尝试像这样改变你的getdetails函数

public function get_details($data)
{
  $query = $this->db->get_where('users', array('id' => $data['id']));
  return $query->row_array();

}

或者您只能从控制器传递id而不是$ data这样的数据

$this->myaccount_model->get_details($session_data['id']);

现在您可以像这样更改模型

public function get_details($id)
{
  $query = $this->db->get_where('users', array('id' => $id));
  return $query->row_array();

}