如果 Codeigniter 3 中模型 return 中的查询为空,则重定向到控制器
Redirect to controller if query in model return empty in Codeigniter 3
如果我的模型中的查询 return 为空,我想做的是将用户重定向到另一个控制器。
我有这样的控制器,在 $id 中传递 url 参数来获取特定用户
public function get_user($id)
{
$data['user'] = $this->user_model->get_user_detail($id);
$this->load->view('customer_detail',$data);
}
还有我的模特:
public function get_user_detail($id)
{
$query = $this->db->where('user_id', $id)->get('user');
return $query->row();
}
然后我像这样将结果传递给我的视图:
<?php echo $user->name;?>
它工作得很好。来自我的控制器的 url 类似于 mysite/user/get_user/7,'7' 是 ID。但是,如果我直接在 url 栏中输入不存在的 ID,例如 mysite/user/get_user/99,它将抛出错误“尝试获取非对象的 属性 'name'”,因为没有用户数据库中的 ID 为 99。如果没有从查询中找到数据,如何将用户重定向到另一个控制器?
谢谢
public function get_user_detail($id)
{
$query = $this->db->where('user_id', $id)->get('user');
$query != "" ? redirect('actual-controller ($query)') : redirect('other-controller');
}
controller($query){ return $query->row(); //your view code for view here }
感谢@Vickel 指出。我应该在不在模型中的控制器上进行检查,不需要重定向。我正在检查模型并重定向。
public function get_user($id)
{
$data['user'] = $this->user_model->get_user_detail($id);
if (!empty($data['user'])) {
$this->load->view('customer_detail',$data);
} else {
$this->load->view('404');
}
}
一种简单的重定向方式。
$q = $this->db->query()->row();
If($q==""){
redirect('url/page');
}
如果我的模型中的查询 return 为空,我想做的是将用户重定向到另一个控制器。
我有这样的控制器,在 $id 中传递 url 参数来获取特定用户
public function get_user($id)
{
$data['user'] = $this->user_model->get_user_detail($id);
$this->load->view('customer_detail',$data);
}
还有我的模特:
public function get_user_detail($id)
{
$query = $this->db->where('user_id', $id)->get('user');
return $query->row();
}
然后我像这样将结果传递给我的视图:
<?php echo $user->name;?>
它工作得很好。来自我的控制器的 url 类似于 mysite/user/get_user/7,'7' 是 ID。但是,如果我直接在 url 栏中输入不存在的 ID,例如 mysite/user/get_user/99,它将抛出错误“尝试获取非对象的 属性 'name'”,因为没有用户数据库中的 ID 为 99。如果没有从查询中找到数据,如何将用户重定向到另一个控制器?
谢谢
public function get_user_detail($id)
{
$query = $this->db->where('user_id', $id)->get('user');
$query != "" ? redirect('actual-controller ($query)') : redirect('other-controller');
}
controller($query){ return $query->row(); //your view code for view here }
感谢@Vickel 指出。我应该在不在模型中的控制器上进行检查,不需要重定向。我正在检查模型并重定向。
public function get_user($id)
{
$data['user'] = $this->user_model->get_user_detail($id);
if (!empty($data['user'])) {
$this->load->view('customer_detail',$data);
} else {
$this->load->view('404');
}
}
一种简单的重定向方式。
$q = $this->db->query()->row();
If($q==""){
redirect('url/page');
}