【问题标题】:keep query outside of "VIEW" in codeigniter在codeigniter中将查询保持在“VIEW”之外
【发布时间】:2016-09-22 10:12:15
【问题描述】:

我对codeigniter很陌生。我有两个表,它们之间有一对多的关系。架构如下。一个是员工表,另一个是假期应用程序表

员工(身份证,姓名),

应用程序(id,start_date,end_date,reason,user_id),

计划是在显示start_date,end_date,reason and name 的单个页面中显示所有应用程序。为了查询application 表,我有一个管理员控制器,因为只有管理员可以查询application 表。还有另一个用户控制器来获取数据从员工表。在管理模型中,我有以下查询来获取所有应用程序

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 并获取数据。

如果我这样做我需要在“VIEW”中使用用户模型,这不是 MVC 方法。我该如何解决这个问题。谢谢!!

【问题讨论】:

    标签: php mysql codeigniter


    【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 2013-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多