Codeigniter JOIN多个表

时间:2015-10-10 10:17:28

标签: php mysql codeigniter

我在使用codeigniter检索多个表中的数据时遇到了一些麻烦。

这是我用来检索模型中运行良好的数据的代码。

function retrieve_experience($alumni_id)
{
$this->db->select('*');
$this->db->from('experience');
$this->db->where('alumni_id',$alumni_id);
$query = $this->db->get();
return $query;  
}

function retrieve_education($alumni_id)
{
$this->db->select('*');
$this->db->from('education');
$this->db->where('alumni_id',$alumni_id);
$query = $this->db->get();
return $query;
}

现在我尝试使用简化代码但无法显示数据。这是我模型中的代码

function retrieve_all_data($alumni_id)
{
$this->db->select('*');
$this->db->from('experience');
$this->db->join('education','education.alumni_id=experience.alumni_id');
$this->db->where('experience.alumni_id',$alumni_id);
$query=$this->db->get();
return $query->result_array();
}

在我的控制器中,我使用此代码检索模型中的数据

function display()
{
$alumni_id = $this->session->userdata('alumni_id');
$data['all_data'] = $this->Alumni_model->retrieve_all_data($alumni_id);
$data['main_content'] = 'alumni_home';
$this->load->view('includes/template', $data);
}

对于我使用此代码的显示器

foreach($all_data as $results)
{
/** data from experience table **/
$results['company_name']; 
$results['company_address'];
/** data from education table **/
$results['school_name'];
$results['field_of_study'];
}

我根本无法展示任何东西。请帮忙

2 个答案:

答案 0 :(得分:1)

希望下面提到的函数应该返回你期望的数据。

function retrieve_all_data($alumni_id)
{
  $this->db->select('*');
  $this->db->from('experience ex');
  $this->db->join('education ed','ed.alumni_id=ex.alumni_id');
  $this->db->where('ex.alumni_id',$alumni_id);
  $query=$this->db->get();
  return $query->result_array();
}

答案 1 :(得分:1)

尝试以下代码,

我相信你会想要这样的事情:

function retrieve_all_data($alumni_id)
{
  $this->db->select("e.*,edu.*");
  $this->db->from("experience e");
  $this->db->join("education edu", "edu.alumni_id = e.alumni_id",'left');
  $this->db->where('e.alumni_id',$alumni_id);
  $this->db->group_by('e.exp_id');
  $query = $this->db->get();
  return $query->result_array();
}