【问题标题】:returning array from Model to Controller codeigniter从模型返回数组到控制器代码点火器
【发布时间】:2014-01-05 18:16:49
【问题描述】:

我正在尝试从数据库中查询两个具有 2 个不同 ID 的值,我需要在一个数组上获取所有结果。这是我的控制器的一部分。

function account()
{
    $user_id = $this->session->userdata('user_id');
    $this->load->model("Site_model");
    $q = $this->Site_model->get_all_notify($user_id);
}

这是模型:

function get_user_data_by_id($id) {
    $this->db->where("id",$id);
    $q=$this->db->get("users");
    return  $q->result();
}

function get_all_notify($user_id) {
    $this->db->where("wanted_id",$user_id);
    $this->db->where("requests_id",1);
    $q=$this->db->get("intrested");
    foreach($q->result() as $row) {
        $user=$this->get_user_data_by_id($row->users_id);
    }
    return $user;
}

但是当我从控制器 print_r $q 我只得到 1 行...但是当我 print_r $user 我得到所有结果!即使使用 foreach 似乎也没有任何效果!

【问题讨论】:

  • 您在循环的每次迭代中覆盖 $user

标签: php mysql arrays codeigniter return


【解决方案1】:

您需要创建数组并将用户数据存储在其中,在当前代码中,将返回来自 foreach 的最后一次迭代数据

$user=array();
foreach($q->result() as $row)
{
        $user[]=$this->get_user_data_by_id($row->users_id);
}
return $user;

【讨论】:

  • 这适用于控制器,但是当我将那个从模型返回的变量传递给 view like($this->load->view("include/template",$data); 当我尝试foreach 它在视图上我无法访问任何索引,当我 print_r $data 它给我正确的记录作为一个数组,但我需要用户名索引,我不能使用 $data['username'] 或 $data- >username 或 $data[3]。如何从该数组中获取任何值!
  • get_user_data_by_id($id) 中将 $q->result(); 更改为 $q->row(); 如果每个传递的 id 只有一个用户
  • 非常感谢!我被困了 5 个小时,你救了我的命。我不明白出了什么问题!发送 ->row() 或 ->result() 有什么问题?
  • @yasser 如果你觉得这个答案有帮助,那么Read here
  • @yasser result() 将返回多条记录,每条记录为 n 数组格式,row() 将只给出一条记录
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-15
  • 2013-02-27
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多