5

所以我有 3 张桌子我想加入。

我正在构建一个我 Codeigniter 的应用程序,我有 3 个表

客户端:
-id
-phone_number
-hospital_id
-smc_status
-testing_center_id

医院
-id
-name


测试中心-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上显示医院名称和检测中心名称。我该怎么办?我尝试了一些由于某种原因似乎不起作用的技术。请指教

4

3 回答 3

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'] ?>

编辑:你也不应该使用 SELECT *,这clients.*是在做的。更新了我的代码。

于 2012-09-16T12:55:33.493 回答
0

应该是这样的

 $this->db->join('hospital', 'clients.hospital_id = hospital.id');
 $this->db->join('testing_center', 'clients.testing_center_id  = testing_center.id');
于 2012-09-18T09:32:20.207 回答
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');

还要检查

client* s * 和 client,如果它们在任何地方都相同

并按照 Nerd 的建议进行更改: $this->db->select('clients.*'); 至:

$this->db->select('*'); 
于 2012-09-16T12:53:50.977 回答