使用外键codeigniter加入

时间:2016-04-22 14:33:28

标签: codeigniter join

我的代码有什么问题? 我选择了学生的标识符并将其存储在会话中,然后我对此进行了测试以从表中选择相应的值,并且从结果中我希望得到我正在寻找的表,但它并不是工作。 在这种情况下,我有三个表缺席_学生(CNE,Idabsence),缺席(iabsence,....)我希望从缺席中获得与id_student(CNE)相对应的行。

public function absence(){
$id2= $this->session->CNE;
$this->db->select('id_absence');
            $this->db->from('absence_etudiant');
            $this->db->where('CNE',$id2);
            $query = $this->db->get();
             $row=$query->row();
 if($query->num_rows() == 1)
{ 

    $id_abs = $row->id_absence;

}

$this->db->select('*');
             $this->db->from('absence');
            $this->db->where('id_absence',$id_abs);
            $query = $this->db->get();
            $result=$query->result();
$this->load->view('Etudiants/affi',$result);


 }

2 个答案:

答案 0 :(得分:0)

你可以发送更多ifno关于你的表关系。

我只能帮助您解决此问题

Controller.php这样

function absence(){
    $data['result']   = $this->model->get_absence($this->session->CNE);

    $this->load->view('Etudiants/affi', $data);
}

model.php

function get_absence($id){
    $this->db->query('SELECT * FROM absence a WHERE a.id_absence IN (SELECT ae.id_absence FROM absence_etudiant ae WHERE ae.CNE = '.$id.' ORDER BY ae.CNE LIMIT 1)');
    $result = $this->db->get()->result();

    return $result;
}

希望,这有助于你

答案 1 :(得分:0)

使用连接获取所需数据的最简单查询。我将使用db->query()

而不是使用查询生成器
public function absence(){
    $id2= $this->session->CNE;
    $query = $this->db->query("Select * From absence_etudiant Inner Join absence On absence.id_absence = absence_etudiant.CNE Where absence_etudiant.CNE = $id2");

    $data['absences'] = $query->result();
    $this->load->view('Etudiants/affi', $data);
}

我可能没有加入正确的字段。我不确定我理解所涉及的表格结构。这是我在您的问题中使用代码进行的最佳尝试。

查询结果将在var $absences的视图中提供。在视图文件中,可以按如下方式创建为每个缺勤打印一行的表。

  <table> 
    <?php foreach($absences as $absence) : ?>
      <tr> 
        <td><strong><?php echo $absence->id_absence; ?></strong></td>
        <td><?php echo $absence->id_seance; ?></td>
        <td><?php echo $absence->justification; ?></td>
        <td><?php echo $absence->course; ?></td>
      </tr>
    <?php endforeach; ?>
  </table>

我没有展示如何创建表格标题行,但如果您想要一个,则会将其放在<table>标记和foreach循环之间。

我应该补充一点,elddenmedio的另一个答案更好地展示了如何使用MVC主体来构建这个过程。他让控制器从模型中获取结果,然后将模型传递给视图。