2012-09-16 16 views
5

So habe ich 3 Tabellen, denen ich beitreten möchte.Codeigniter: 3 Tabellen verbinden und Daten in Ansicht anzeigen

Ich baue eine app i Codeigniter und ich habe 3 Tabellen

Auftraggeber:
-id
-phone_number
-hospital_id
-smc_status
-testing_center_id

Krankenhaus
-id
-name

Testing_center
-id
-name

Im Modell Ich habe diese:

public function get_clients() 
    { 
     if($slug === FALSE) 
     { 
      $this->db->select('clients.*'); 
      $this->db->from('clients'); 
      $this->db->join('hospital', 'clients.id = hospital.id'); 
      $this->db->join('testing_center', 'clients.id = testing_center.id'); 
      $query = $this->db->get(); 

      return $query->result_array(); 
     } 

     $query = $this->db->get_where('clients'); 
     return $query->row_array(); 
    } 

Nach Ansicht habe ich:

<tbody> 
    <?php foreach ($clients as $client_item): ?> 
    <tr> 
     <td><?php echo $client_item['phone_number'] ?></td> 
     <td><?php echo $client_item['smc_status'] ?></td> 
     <td><?php echo $client_item['hospital_id'] ?></td> //i wish to have the hospital name here 
     <td><?php echo $client_item['testing_center_id'] ?></td> //i wish to have the testing center name here 
     <td><?php echo $client_item['language'] ?></td> 
     <td><a href="#">View</a></td> 
    </tr> 
    <?php endforeach ?> 
</tbody> 

Aber das ist becau Ich habe es versäumt, den Namen des Krankenhauses und den Namen des Testzentrums am dritten und vierten Tag anzuzeigen. Wie kann ich das tun? Ich habe ein paar Techniken ausprobiert, die aus irgendeinem Grund einfach nicht zu funktionieren schienen. Bitte geben Sie

Antwort

0

Was ist, wenn Sie das versuchen passiert:

$this->db->join('hospital', 'hospital.id = clients.id'); 
$this->db->join('testing_center', 'testing_center.id = clients.id'); 

statt dessen:

$this->db->join('hospital', 'clients.id = hospital.id'); 
$this->db->join('testing_center', 'clients.id = testing_center.id'); 

auch

Client * s * und Client prüfen, ob sie gleich sind überall

Und auch als Ne ändern rd vorgeschlagen: $ this-> db-> auswählen ('clients. *'); zu:

$this->db->select('*'); 
+0

ich die Empfehlungen von Nerd zuerst alle notwendigen Änderungen vorgenommen haben, sowie bei Ihnen, aber ich am Ende den Fehler HTTP bekommen 500. Warum ist das so? – raybesiga

+0

Überprüft und ich hatte einige Rechtschreibfehler gemacht. Danke für den Hinweis! – raybesiga

+0

Ich versuche, ein Formular zu füllen und Daten zurück in die Datenbank in die verschiedenen Tabellen zu schieben. Wie würde ich darüber gehen? BIN ich zuerst das Formular an die Datenbank, so dass es die Joins versteht oder sollte ich Eingabetext ähnlich wie in der Datenbank erwartet? – raybesiga

3

Sie die Auswahl nur die Werte aus der clients Tabelle. Sie müssen die Spalten aus den anderen Tabellen als auch

$this->db->select('clients.id, 
    clients.phone_number, 
    clients.smc_status, 
    clients.language, 
    hospital.name AS hospital_name, 
    testing_center.name AS testing_center_name'); 

Dann wählen Sie sie durch

<?php echo $client_item['hospital_name'] ?> 
<?php echo $client_item['testing_center_name'] ?> 

EDIT zugreifen können: Sie shouldn't use SELECT * Auch die clients.* tut. Mein Code wurde aktualisiert.

+0

Ich habe die Änderungen vorgenommen, aber am Ende bekomme ich den HTTP Error 500. Warum ist das so? – raybesiga

+0

Es gibt eine Reihe von verschiedenen Dingen, die schief gelaufen sein könnten. Überprüfen Sie Ihr PHP-Protokoll. –

+0

Ich verwende es auf meinem localhost und ich kann alle Protokolle nicht überprüfen, aber es einfach geändert: $ this-> db-> wählen ('clients.id, clients.phone_number, clients.smc_status, clients.language , Krankenhausname AS Krankenhausname, \t \t \t \t testing_center.name AS testing_center_name '); $ this-> db-> von ('clients'); $ this-> db-> join ('hospital', 'hospital.id = clients.id'); $ this-> db-> join ('testing_center', 'testing_center.id = clients.id'); $ query = $ this-> db-> get(); Rückgabe $ query-> result_array(); } $ query = $ this-> db-> get_where ('clients', array ('slug' => $ slug)); Rückgabe $ query-> row_array(); } } – raybesiga

0

Es sholud wie dieser sein

$this->db->join('hospital', 'clients.hospital_id = hospital.id'); 
$this->db->join('testing_center', 'clients.testing_center_id = testing_center.id'); 
+0

Es gibt einen Fehler beim Verbinden der gleichen Spaltennamen in beiden Tabellen wie ("hospital_id in Clients, ID im Krankenhaus") und ("testing_center_id in Clients, ID in testing_center") – Gautam3164

Verwandte Themen