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

CodeIgniter中按年份降序展示PDF文档的问题求助

解决CodeIgniter中PDF文档按年份降序分组展示的问题

第一步:修正数据库查询逻辑

如果你的pdf_date字段是日期/时间类型(比如DATE、DATETIME),需要先提取年份再排序:

// 在Model中编写查询
$this->db->select('*, YEAR(pdf_date) as pdf_year'); // 提取年份作为独立字段
$this->db->order_by('pdf_year DESC'); // 按年份降序排列
$query = $this->db->get('your_pdf_table');
return $query->result();

如果pdf_date是字符串类型(直接存储"1983""2020"这类年份),需要强制转换为数值后排序:

$this->db->order_by('CAST(pdf_date AS UNSIGNED) DESC');
$query = $this->db->get('your_pdf_table');
return $query->result();

第二步:修正视图分组展示逻辑

拿到排序后的数据集后,在视图中按年份分组,直接遍历即可保证顺序:

<?php
// 按年份分组存储数据
$pdfs_by_year = [];
foreach ($pdf_list as $pdf) {
    $year = isset($pdf->pdf_year) ? $pdf->pdf_year : $pdf->pdf_date;
    if (!isset($pdfs_by_year[$year])) {
        $pdfs_by_year[$year] = [];
    }
    $pdfs_by_year[$year][] = $pdf;
}

// 按降序年份展示分组内容
foreach ($pdfs_by_year as $year => $pdfs) {
    echo "<h3>{$year}</h3>";
    echo "<ul>";
    foreach ($pdfs as $pdf) {
        echo "<li><a href='{$pdf->pdf_url}'>{$pdf->pdf_name}</a></li>";
    }
    echo "</ul>";
}
?>

常见排查点

  • 确认pdf_date字段存储格式:日期类型要保证是完整4位年份,字符串类型避免存"83"这类不规范格式。
  • 检查Model中是否有其他order_by语句覆盖当前排序,可使用$this->db->reset_query()清空之前的查询规则后再执行新排序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:36:01