2012-09-16 9 views
5

Mam więc 3 tabele, które chcę dołączyć.Codeigniter: Dołącz do 3 tabel i wyświetl dane w widoku

buduję aplikację i CodeIgniter i mam 3 tabele

Klient:
-id
-phone_number
-hospital_id
-smc_status
-testing_center_id

Hospital
-id
-name

Testing_center
-id
-name

W modelu, mam to:

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(); 
    } 

W widoku mam:

<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> 

Ale to jest becau se Nie udało mi się pokazać nazwy szpitala i nazwy ośrodka badań na trzecim i czwartym td. Jak mogę to załatwić? Próbowałem kilku technik, które po prostu nie działały z jakiegoś powodu. Proszę doradzić

Odpowiedz

0

Co się stanie, jeśli spróbujesz to:

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

zamiast tego:

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

również sprawdzić

klient * s * i klienta, jeśli są one takie same wszędzie

A także zmienić na Ne rd proponowane: $ this-> db-> select ('clients. *'); do:

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

I dokonaniu wszystkich niezbędnych zmian najpierw zalecenia za nerd, jak Ty, ale ja skończyć uzyskiwanie błąd HTTP 500. Dlaczego? – raybesiga

+0

Sprawdzone i zrobiłem kilka błędów w pisowni. Dzięki za radę! – raybesiga

+0

Próbuję wypełnić formularz i przekazać dane z powrotem do bazy danych do różnych tabel. Jak bym to zrobił? Czy najpierw wiążę formularz z bazą danych w taki sposób, że rozumie on łączenia lub powinienem umieścić tekst wejściowy podobny do oczekiwanego w bazie danych? – raybesiga

3

jesteś tylko wybranie wartości z tabeli clients. Musisz wybrać kolumny z innych tabel, a także

$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'); 

Następnie można uzyskać do nich dostęp przez

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

EDIT: Również shouldn't use SELECT *, który clients.* robi. Zaktualizowałem mój kod.

+0

Dokonałem zmian, ale w końcu otrzymałem błąd HTTP 500. Dlaczego tak jest? – raybesiga

+0

Istnieje wiele różnych rzeczy, które mogły pójść nie tak. Sprawdź swój dziennik PHP. –

+0

Używam go na moim localhost i nie mogę sprawdzić żadnych dzienników, ale po prostu zmieniłem na: $ this-> db-> select ('clients.id, clients.phone_number, clients.smc_status, clients.language , szpital.nazwa AS nazwa_ szpitala, \t \t \t \t testing_center.name AS testing_center_name '); $ this-> db-> from ('clients'); $ this-> db-> join ("szpital", "szpital.id = clients.id"); $ this-> db-> join ("test_center", "testing_center.id = clients.id"); $ query = $ this-> db-> get(); return $ query-> result_array(); } $ query = $ this-> db-> get_where ('clients', array ('slug' => $ slug)); return $ query-> row_array(); } } – raybesiga

0

To sholud być jak ten

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

Występuje błąd związany z łączeniem tych samych nazw kolumn w obu tablach, takich jak ("szpital_id w klientach, identyfikator w szpitalu") i ("testing_center_id w klientach, id w testing_center") – Gautam3164

Powiązane problemy