Codeigniter:加入3个表并在视图中显示数据

时间:2012-09-16 12:46:55

标签: php codeigniter

所以我想加入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上显示医院名称和测试中心名称。我该怎么办呢?我尝试了一些似乎因某些原因似乎无法工作的技术。请指教

3 个答案:

答案 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');