2012-09-16 30 views
5

Vì vậy, tôi có 3 bảng tôi muốn tham gia.Codeigniter: Tham gia 3 bảng và hiển thị dữ liệu ở chế độ xem

Tôi đang xây dựng một ứng dụng i CodeIgniter và tôi có 3 bảng

Chủ đầu tư:
-ID
-phone_number
-hospital_id
-smc_status
-testing_center_id

Bệnh viện
-id
-name

Testing_center
-ID
-name

Trong mô hình, tôi có điều này:

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

Trong giao diện tôi có:

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

Nhưng đó là becau Tôi đã không hiển thị tên bệnh viện và tên trung tâm kiểm tra vào ngày thứ ba và thứ tư td. Làm thế nào tôi có thể đi về điều đó? Tôi đã thử một vài kỹ thuật mà dường như không hoạt động vì một lý do nào đó. Xin cho biết

Trả lời

0

gì xảy ra nếu bạn cố gắng này:

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

thay vì điều này:

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

cũng kiểm tra

client * s * và khách hàng nếu họ đều giống nhau ở khắp mọi nơi

Và cũng thay đổi thành Ne rd đề xuất: $ this-> db-> select ('clients. *'); tới:

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

tôi đã thực hiện tất cả các thay đổi cần thiết đầu tiên các khuyến nghị bởi Nerd, cũng như của bạn nhưng tôi kết thúc nhận được Lỗi HTTP 500. Tại sao vậy? – raybesiga

+0

Đã kiểm tra và tôi đã thực hiện một số lỗi chính tả. Cảm ơn vì lời khuyên! – raybesiga

+0

Tôi đang cố gắng điền vào biểu mẫu và đẩy dữ liệu trở lại cơ sở dữ liệu vào các bảng khác nhau. Làm thế nào tôi sẽ đi về điều đó? DO i đầu tiên ràng buộc các hình thức để cơ sở dữ liệu như vậy mà nó hiểu được tham gia hoặc tôi nên đặt văn bản đầu vào tương tự như những gì được mong đợi trong cơ sở dữ liệu? – raybesiga

3

Bạn chỉ việc lựa chọn các giá trị từ bảng clients. Bạn cần phải chọn các cột từ các bảng khác cũng

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

Sau đó, bạn có thể truy cập chúng bằng

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

EDIT: Ngoài ra bạn có shouldn't use SELECT *, mà clients.* đang làm. Đã cập nhật mã của tôi.

+0

Tôi đã thực hiện các thay đổi nhưng tôi sẽ nhận được Lỗi HTTP 500. Tại sao lại như vậy? – raybesiga

+0

Có một số điều khác nhau có thể xảy ra. Kiểm tra nhật ký PHP của bạn. –

+0

Tôi đang chạy trên máy chủ cục bộ của mình và tôi không thể kiểm tra bất kỳ nhật ký nào, nhưng tôi chỉ cần thay đổi thành: $ this-> db-> select ('clients.id, clients.phone_number, clients.smc_status, clients.language , hospital.name AS hospital_name, \t \t \t \t testing_center.name AS testing_center_name '); $ this-> db-> from ('clients'); $ this-> db-> join ('hospital', 'hospital.id = clients.id'); $ this-> db-> join ('testing_center', 'testing_center.id = clients.id'); $ query = $ this-> db-> get(); trả về $ query-> result_array(); } $ query = $ this-> db-> get_where ('clients', array ('slug' => $ slug)); trả về $ query-> row_array(); } } – raybesiga

0

Nó sholud được như thế này

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

Có sai với việc tham gia cùng tên cột trong cả hai tab như ("hospital_id trong ứng dụng khách, id trong bệnh viện") và ("test_center_id trong ứng dụng khách, id trong testing_center") – Gautam3164

Các vấn đề liên quan