我必须说我真的非常愚蠢地理解这种逻辑。我已经玩了近一个小时的测试,我不能按照我想要的方式工作。我要么“试图获取非对象的属性”或“数组到字符串转换”错误。
我的目标是调用SQL查询并将结果存储在一个变量中,然后我将提供给我的视图。在视图中,我希望能够从变量中检索值,例如:$info->email
,以获取存储在表格中email
列中的值。
我也试过先做$query = $this->db->get('users'); return $query->row();
,但这也不起作用。请原谅我的愚蠢,如果你能如此善良并向我解释我如何能够实现上述的目标。测试代码如下。此外,此查询始终只找到1行100%,因为用户id
是唯一的。
控制器
$data['info'] = $this->User_m->get_my_info($this->user_id);
$this->load->view('test_v', $data);
模型
private function get_my_info($uid){
$this->db->select('id, name, email');
$this->db->where('user_id', $uid);
return $this->db->get('users');
}
查看
<p>Email: <?php echo $info->email ?></p>
答案 0 :(得分:2)
你应该看看这个。 Generating Query Results。你应该回复一些东西
format | object | array
-------------------------------------
single | row() | row_array()
multiple | result()| result_array()
您应该根据您的要求选择格式。当您检索单个用户时,您的功能应该是这样的。
public function get_my_info($uid)
{
return $this->db
->select('id, name, email')
->where('user_id', $uid)
->get('users')
->row();
}
如果将模型函数保密,模型函数应该是公共的,它只能在模型类中访问,而不能在控制器中访问。
您可以启用探查器以查看正在运行的查询
只需将此行添加到控制器构造函数中即可。
$this->output->enable_profiler(true);
答案 1 :(得分:1)
制作模型函数public
而不是private
然后在视图中
if ($info->num_rows() > 0) {
foreach ($info->result() as $row) {
echo $row->email;
}
}
查看更多信息here
答案 2 :(得分:0)
您应该在模型中进行2项更改。
1-功能将是公开的
2- row()
回复了。
希望它会对你有所帮助。
<强>模型强>
public function get_my_info($uid){
$this->db->select('id, name, email');
$this->db->where('user_id', $uid);
return $this->db->get('users')->row();
}
答案 3 :(得分:0)
你应该使用返回值的函数。
return $this->db->get('users')->row();
return $this->db->get('users')->result();
return $this->db->get('users')->result_array();
且功能应为public
而不是private