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

CodeIgniter中如何实现分组求和并在DataTable中展示?

解决CodeIgniter中DataTable展示分组求和库存的问题

1. 修正Model查询逻辑

原Model使用SELECT *进行分组是错误的,分组查询必须明确指定分组字段与聚合函数,直接复用phpMyAdmin中验证通过的SQL逻辑即可:

Model代码示例

<?php
class ProductInventoryModel extends CI_Model {
    public function get_grouped_total_stocks() {
        $this->db->select('product_name, SUM(CASE WHEN qty > 0 THEN qty ELSE 0 END) AS total_stocks');
        $this->db->from('product_inventory');
        $this->db->group_by('product_name');
        
        return $this->db->get()->result();
    }
}

2. 调整Controller响应格式

确保Controller正确调用Model方法,并返回DataTable所需的标准JSON结构(核心是用data字段包裹数据集):

Controller代码示例

<?php
class InventoryController extends CI_Controller {
    public function fetch_stocks_data() {
        $this->load->model('ProductInventoryModel');
        $stocks_list = $this->ProductInventoryModel->get_grouped_total_stocks();
        
        // 输出符合DataTable要求的JSON
        echo json_encode([
            'data' => $stocks_list
        ]);
    }
}

3. 前端DataTable列配置适配

保证前端列配置与后端返回的字段一一对应:

前端JS代码示例

$(document).ready(function() {
    $('#inventoryTable').DataTable({
        ajax: {
            url: '/inventory/fetch_stocks_data', // 对应Controller路由
            type: 'GET',
            dataType: 'json'
        },
        columns: [
            { data: 'product_name', title: '产品名称' },
            { data: 'total_stocks', title: '总库存' }
        ]
    });
});

排查要点

  • 检查Controller路由配置,确保前端请求能正确访问数据接口
  • 查看浏览器控制台的网络请求,确认后端返回的JSON无语法错误
  • 核对Model中表名、字段名的拼写,避免因大小写或拼写错误导致查询失败
  • 若使用DataTable服务器端分页,需在Controller中处理start、length等参数,同步调整Model查询添加分页逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:05:24