如果模型中的查询在 Codeigniter 3 中返回空,则重定向到控制器

我想要做的是,如果我的模型中的查询返回空,则将用户重定向到另一个控制器。


我有这样的控制器,在 $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),则会抛出错误“尝试获取非对象的属性‘名称’”,因为数据库中没有 id 为 99 的用户。如果查询中没有找到数据,如何将用户重定向到另一个控制器?


森林海
浏览 130回答 3
3回答

烙印99

一种简单的重定向方法。$q =&nbsp; $this->db->query()->row();&nbsp;If($q==""){&nbsp; &nbsp;redirect('url/page');&nbsp; }

收到一只叮咚

我应该对控制器而不是模型中的控制器进行检查,并且不需要重定向。我正在检查模型并重定向。public function get_user($id){&nbsp; $data['user'] = $this->user_model->get_user_detail($id);&nbsp; if (!empty($data['user'])) {&nbsp; $this->load->view('customer_detail',$data);&nbsp; } else {&nbsp; $this->load->view('404');&nbsp; }}

DIEA

public function get_user_detail($id){&nbsp; $query = $this->db->where('user_id', $id)->get('user');&nbsp; &nbsp; $query != "" ? redirect('actual-controller ($query)') : redirect('other-controller');}controller($query){ return $query->row(); //your view code for view here }
打开App,查看更多内容
随时随地看视频慕课网APP