所以我想加入3张桌子。
我正在构建一个app i Codeigniter,我有3个表
客户端:
-id
-phone_number
-hospital_id
-smc_status
-testing_center_id
医院
-id
-name
Testing_center
-id
-name
在模型中,我有这个:
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();
}
在视图中我有:
<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>
但那是因为我未能在第三和第四个td上显示医院名称和测试中心名称。我该怎么办呢?我尝试了一些似乎因某些原因似乎无法工作的技术。请指教
答案 0 :(得分:3)
您只是从clients
表中选择值。您还需要从其他表中选择列
$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');
然后你可以通过
访问它们<?php echo $client_item['hospital_name'] ?>
<?php echo $client_item['testing_center_name'] ?>
编辑:还shouldn't use SELECT *,clients.*
正在做的事情。更新了我的代码。
答案 1 :(得分:0)
如果您尝试这样做会发生什么:
$this->db->join('hospital', 'hospital.id = clients.id');
$this->db->join('testing_center', 'testing_center.id = clients.id');
而不是:
$this->db->join('hospital', 'clients.id = hospital.id');
$this->db->join('testing_center', 'clients.id = testing_center.id');
同时检查
客户端* s *和客户端,如果它们在任何地方相同
并且随着Nerd的提议而改变: $这个 - &GT; DB-&GT;( '客户*')选择; 到:
$this->db->select('*');
答案 2 :(得分:0)
应该是这样的
$this->db->join('hospital', 'clients.hospital_id = hospital.id');
$this->db->join('testing_center', 'clients.testing_center_id = testing_center.id');