如果 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');
  }