在codeigniter中显示带有连接表的数据

时间:2017-05-07 23:53:09

标签: php mysql codeigniter

我想显示用户的所有预订,这是我的表格:

CREATE TABLE IF NOT EXISTS `reservation` (

id_passager int(11)NOT NULL,   idvoyage int(11)NOT NULL,   etat varchar(20)NOT NULL,   dateres时间戳NULL DEFAULT CURRENT_TIMESTAMP,   PRIMARY KEY(id_passageridvoyage),   KEY iduserid_passageridvoyage),   KEY idvoyageidvoyage) );

CREATE TABLE IF NOT EXISTS `trajet` (

id int(11)NOT NULL AUTO_INCREMENT,   villedep varchar(100)NOT NULL,   villearrivee varchar(100)NOT NULL,   主要关键(id) );

CREATE TABLE IF NOT EXISTS `user` (

id int(11)NOT NULL AUTO_INCREMENT,   nom varchar(50)NOT NULL,   prenom varchar(50)NOT NULL,   datenaiss日期非空,   sexe varchar(10)NOT NULL,   email varchar(50)NOT NULL,   numtel varchar(14)NOT NULL,   mdp varchar(16)NOT NULL,   imageprofil varchar(100)DEFAULT NULL,   nbsignal int(11)DEFAULT NULL,   pseudo varchar(20)NOT NULL,   musique varchar(20)DEFAULT NULL,   fumeur varchar(20)DEFAULT NULL,   bavardage varchar(20)DEFAULT NULL,   sexecovoiturage varchar(20)DEFAULT NULL,   description varchar(200)DEFAULT NULL,   PRIMARY KEY(id),   独特的钥匙emailemail),   独特的钥匙numtelnumtel),   独特的钥匙pseudopseudo) );

CREATE TABLE IF NOT EXISTS `vehicule` (

matricule varchar(50)NOT NULL,   marque varchar(50)NOT NULL,   modele varchar(50)NOT NULL,   confort varchar(50)NOT NULL,   couleur varchar(20)NOT NULL,   image1 varchar(100)DEFAULT NULL,   id_utilisateur int(11)NOT NULL,   PRIMARY KEY(matricule),   KEY id_utilisateurid_utilisateur) );

这是我的控制器功能:

public function reservation()
{
    $this->load->view('headerprofile');
    $data['reservation']=$this->User_model->getReservation();
    $this->load->view('trajet/reservation',$data);
    $this->load->view('footerprofile');
}

这是我的模特:

function getReservation()
{
    $results = array();

    $id=$this->session->userdata('id');
    $this->db->select('res.*, v.*, t.*');
    $this->db->from('reservation AS res, voyage AS v, trajet AS t,user AS u,vehicule AS veh ');
    $this->db->where('res.id_passager',$id);
    $this->db->where('u.id',$id);
    $this->db->where('res.idvoyage=v.id');
    $this->db->where('t.id=v.id_trajet');
    $this->db->where('veh.id_utilisateur',$id);
    //$this->db->where('v.id_vehicule=veh.matricule');

    $query = $this->db->get();
    if($query->num_rows()>1)
    {
        $results =$query->result();
    }
   return $results;
}

1 个答案:

答案 0 :(得分:2)

您可能需要在某处包含联接。我还不够酷,无法记住您的外键,并写出一个可以直接粘贴到代码中的示例,但您必须:

$this->db->from('table1');
$this->db->join('table2', 'table2.index = table1.index');

如果需要,您可以指定联接类型。如果您正在尝试做一些奇特的事情,请参阅手册以获得更全面的解释。

https://www.codeigniter.com/userguide3/database/query_builder.html