我对codeigniter很新。我处于这样一种情况:我有两个表,他们之间有一对多关系。架构如下。一个是员工表,另一个是度假应用表
雇员(ID,姓名),
应用(ID,日期,结束日期,因此,USER_ID),
计划是在显示start_date,end_date,reason and name
的单个页面中显示所有应用程序。查询application
表我有一个管理员控制器,因为只有管理员可以查询application
表。那里是另一个从employee表中获取数据的userController。在admin模型中,我有以下查询来获取所有应用程序
class Adminmodel extends CI_Model{
public function fetchAllRequest(){
$q=$this->db->get('application');
if($q->num_rows()){
return $q->result_array();
}else{
return false;
}
}
管理员控制器如下:
class Admin extends CI_Controller{
public function index(){
$this->load->model('Adminmodel');
$data['request']=$this->Adminmodel->fetchAllRequest();
$this->load->view('admin/index',$data);
}
}
}
它给我带来了这样的结果:
Array (
[0] => Array (
[id] =5
[start] => 05/04/2016
[end] => 05/12/2016
[reason] => sick [status] => Pending
[employee_id] => 1
我正在给出一行。可能有数百个应用程序。我的问题是我需要从每一行获取employee_id并将其用于 从员工表中获取名称。 < /强>
一个解决方案是我可以遍历视图中的foreach循环中的每一行,对于每个行,我都会调用用户模型传递员工ID并获取数据。 < / p>
如果我这样做 我需要在“VIEW”中使用用户模型,这不是MVC方法。如何解决这个问题 。谢谢!!
答案 0 :(得分:1)
在CI 2中:选中加入 https://www.codeigniter.com/userguide2/database/active_record.html#select
在CI 3中:检查加入 http://www.codeigniter.com/user_guide/database/query_builder.html#selecting-data
您可以通过employee.id与application.user_id
一起加入这两个表$this->db->select('*');
$this->db->from('application');
$this->db->join('employee', 'employee.id = application.user_id');
$query = $this->db->get();