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

Datatables服务端实现covered_from与covered_to两列数据合并

Datatables服务端合并covered_from与covered_to列实现方案

要实现将covered_from和covered_to两列合并为一列显示的需求,只需对现有$columns数组做两处核心修改:

1. 移除独立的covered_to列定义

删除原数组中dt=4的covered_to列配置,因为该列内容将合并到dt=3的列中展示。

2. 扩展covered_from列的格式化函数

修改covered_from列的formatter函数,同时读取covered_from和covered_to的数值,保留原有的Halfday判断逻辑,合并后输出。

修改后的完整$columns数组代码

$columns = array(
    array( 'db' => 'employee_number', 'dt' => 0 ),
    array( 'db' => 'employee_name', 'dt' => 1 ),
    array( 'db' => 'leave_type', 'dt' => 2 ),
    array( 
        'db' => 'covered_from', 
        'dt' => 3, 
        'formatter' => function( $d, $row) {
            // 格式化covered_from日期
            $from = date('F d, Y', strtotime($row['covered_from']));
            
            // 处理covered_to的原有逻辑:空或Halfday时设为空
            $to = $row['covered_to'];
            if(empty($to) || $to == "Halfday") {
                $to = "";
            } else {
                $to = date('F d, Y', strtotime($to));
            }
            
            // 合并输出,避免to为空时出现多余分隔符
            return $to ? "{$from} - {$to}" : $from;
        }
    ),
    array( 'db' => 'reason', 'dt' => 4 ), // 后续列的dt值需依次前移一位
    array( 'db' => 'number_of_days', 'dt' => 5 ),
    array( 'db' => 'cutoff', 'dt' => 6 ),
    array( 'db' => 'status', 'dt' => 7 ),
);

关键说明

  • 保留了原代码中对covered_to的判断逻辑:当值为空或等于Halfday时,不显示该部分内容
  • 合并输出时做了优化:仅当covered_to有有效日期值时,才添加-分隔符,避免出现January 01, 2024 - 这类多余格式
  • 后续列的dt值需依次前移一位(原dt=5及之后的列都减1),确保前端Datatables的列索引对应正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 23:47:45