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

CodeIgniter中不使用查询构建器统计各医生未付欠款总额并展示

解决CodeIgniter中统计医生未付欠款总额的问题

看起来你现在是要把分散的未付薪资按医生汇总展示,而不是列出每一笔单独的未付记录对吧?不用查询构建器的话,直接调整SQL语句做分组统计就可以轻松搞定,下面是具体的修改步骤:

1. 修改控制器中的查询逻辑

把原来的查询语句改成按医生分组并计算总额的形式,假设你的salaries表包含医生姓名(doctor_name)、薪资金额(salary_amount)这些核心字段,调整后的控制器代码如下:

public function pay_salaries() {
    // 按医生分组统计未付欠款总额,仅保留未付款项
    $salary['salaries'] = $this->db->query("
        SELECT 
            doctor_name, 
            SUM(salary_amount) AS total_unpaid,
            COUNT(salary_id) AS unpaid_record_count -- 可选:显示该医生的未付笔数
        FROM salaries 
        WHERE Payment_status IS NULL 
        GROUP BY doctor_name 
        ORDER BY total_unpaid DESC
    ")->result_array();
    
    $this->load->view('backend/admin/pay_salaries', $salary);
}

补充说明:

如果你的数据库是用doctor_id关联独立的医生表(更规范的设计),建议用doctor_id分组并关联医生表获取姓名,避免同名医生统计错误:

SELECT 
    d.doctor_name, 
    SUM(s.salary_amount) AS total_unpaid
FROM salaries s
JOIN doctors d ON s.doctor_id = d.doctor_id
WHERE s.Payment_status IS NULL 
GROUP BY d.doctor_id, d.doctor_name
ORDER BY total_unpaid DESC

2. 调整视图的展示内容

在你的视图文件pay_salaries.php中,更新表头和循环逻辑,展示每个医生的汇总数据:

<thead>
    <tr>
        <th>DOCTOR'S NAME</th>
        <th>TOTAL UNPAID AMOUNT</th>
        <th>UNPAID RECORDS</th> <!-- 可选字段,对应上面的unpaid_record_count -->
        <th>ACTION</th> <!-- 可添加操作按钮,比如查看该医生的每一笔未付记录 -->
    </tr>
</thead>
<tbody>
    <?php foreach($salaries as $row): ?>
        <tr>
            <td><?= htmlspecialchars($row['doctor_name']) ?></td>
            <td><?= number_format($row['total_unpaid'], 2) ?></td> <!-- 格式化金额为两位小数,更符合财务展示习惯 -->
            <td><?= $row['unpaid_record_count'] ?? '-' ?></td> <!-- 可选字段,兼容未统计笔数的情况 -->
            <td>
                <!-- 示例:添加查看详情按钮,跳转到该医生的所有未付记录页面 -->
                <a href="<?= base_url('admin/doctor_unpaid_details/' . $row['doctor_id']) ?>" class="btn btn-sm btn-info">View Details</a>
            </td>
        </tr>
    <?php endforeach; ?>
</tbody>

视图细节提醒:

  • 用htmlspecialchars()包裹输出内容,防止XSS攻击,确保页面安全
  • number_format()可以让金额显示更规范,适合薪资类的财务场景
  • 如果需要查看某医生的每一笔未付明细,可以额外实现一个控制器方法来处理详情跳转

这样修改后,页面就会清晰展示每位医生的未付欠款总额,而不是零散的单条记录啦。

内容的提问来源于stack exchange,提问作者Max BigBudget

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:05:15