You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter 3中如何绑定数据并显示医生所属科室名称

解决CodeIgniter3中Bootstrap表格显示科室名称而非ID的问题

问题原因

你之前尝试的<?=$department_list[$dl['department']]; ?>报错,是因为$department_list是二维数组(由result_array()返回,每个元素是包含id和name的数组),而不是以科室ID为键、名称为值的一维映射数组。直接用科室ID作为数组索引,要么找不到对应元素,要么取到的是整个科室数组而非名称。

解决方案

方案1:将科室列表转换为ID映射数组(前端处理)

修改Controller中获取科室列表的代码,把二维数组转成以科室ID为键的一维数组:

// 原代码
// $data['department_list'] = $this->db->get('departments')->result_array();

// 修改后
$departments = $this->db->get('departments')->result_array();
$department_map = [];
foreach ($departments as $dept) {
    $department_map[$dept['id']] = $dept['name'];
}
$data['department_map'] = $department_map;

然后在View中调用映射数组,同时增加空值兼容(避免科室ID无效时报错):

<td><?=$department_map[$dl['department']] ?? '未分配科室'; ?></td>

方案2:SQL联表查询(推荐,更高效)

直接在查询医生列表时关联科室表,一次性取出科室名称,避免后端额外处理数组:

修改Controller中获取医生列表的代码:

// 原代码
// $data['doctors_list'] = $this->db->get_where('user', ['role_id' => 2])->result_array();

// 修改后
$this->db->select('user.*, departments.name as department_name');
$this->db->from('user');
// 左连接确保即使医生未分配科室也能正常显示
$this->db->join('departments', 'user.department = departments.id', 'left');
$this->db->where('user.role_id', 2);
$data['doctors_list'] = $this->db->get()->result_array();

然后在View中直接调用查询出来的科室名称字段:

<td><?=$dl['department_name'] ?? '未分配科室'; ?></td>

内容的提问来源于stack exchange,提问作者Hay Blog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 05:57:16