thinkphp排序如何按创建时间排序 配置指南
ThinkPHP中按创建时间排序可通过order()方法实现,支持固定排序、多字段组合及带GET参数的动态排序。分页时需传递query参数保持页码。按天聚合可使用orderRaw()配合DATE_FORMAT函数。对于数组数据,可用array_multisort或usort结合strtotime进行排序。时间格式需统一。
ThinkPHP 里按创建时间排序,听着简单吧?核心就是那个 order() 方法,指定字段和方向就行。但实际开发中,分页保持、URL 参数传递、搜索器写法、多条件组合……每个细节都可能让你调试半天。直接甩一句 $model->order('create_time desc') 能在 Demo 里跑通,可一旦上了线,跳页重置、参数丢失、时间格式不一致,随便一个都能让你血压升高。

先别急着写代码,把几个常见场景和踩坑点理清楚,再动手也不迟。
基础排序写法
固定排序最简单,控制器里直接调用就行:
- 倒序(最新在前):
$list = UserModel::where('status', 1)->order('create_time desc')->paginate(10); - 升序(最早在前):
$list = UserModel::where('status', 1)->order('create_time asc')->paginate(10); - 多字段组合:
->order('create_time desc, id desc'),优先按时间排,时间相同再按 ID 排序,避免同秒数据乱跳。
带 GET 参数的动态排序(点击表头切换)
如果用户想点一下“创建时间”表头就切换排序方向,那就要前端传参 create_time=desc 或 create_time=asc,后端用搜索器来响应。具体步骤:
- 模型里定义搜索器:
public function searchCreateTimeAttr($query, $value) { return $value ? $query->order('create_time', $value) : ''; } - 控制器调用:
UserModel::withSearch(['create_time'], request()->param())->paginate(['query' => request()->param()]) - 模板链接里一定把当前页码带上,不然点一下排序就回到第一页:
{:url('user/index', ['create_time' => $orderRule, 'page' => input('page', 1)])}
这里的 query 参数是分页保持的命门,漏了它,所有排序都会导致页码重置。
按日期(非精确到秒)分组排序
如果需求是“按天聚合再排序”,比如同一天的数据排在一起,那直接用 create_time 字段就没办法了——得用 SQL 函数把时间截到天。此时 orderRaw() 登场:
- 写法:
->orderRaw("DATE_FORMAT(create_time, '%Y-%m-%d') desc, create_time desc") - 实际生成 SQL 就是:
ORDER BY DATE_FORMAT(create_time, '%Y-%m-%d') DESC, create_time DESC - 注意:这个写法依赖 MySQL,并且
create_time字段得是 datetime 或 timestamp 类型。
数组内时间排序(非数据库查询)
有时候数据来源不全是数据库,比如你查了库又调了 API,把结果合并到一个数组里,这时候就得用 PHP 原生的排序函数。核心是提取时间戳再排序:
- 先取出所有时间字段:
$timestamps = array_column($data, 'create_time'); - 用
array_multisort降序:array_multisort(array_map('strtotime', $timestamps), SORT_DESC, $data); - 或者用
usort更灵活:usort($data, function($a, $b) { return strtotime($b['create_time']) - strtotime($a['create_time']); });
注意时间字段的格式必须统一 Y-m-d H:i:s 或时间戳,否则 strtotime 会抛警告,排序结果也乱套。
Adobe Acrobat Pro 是面向办公、法务、财务、教育及出版用户的专业PDF处理软件,可在Mac上创建、编辑、转换、合并和保护文档,并提供OCR文字识别、表单、批注、内容比较、敏感信息遮盖及电子签名功能。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。
PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。
AutoCAD 是 Autodesk 推出的专业计算机辅助设计软件,Windows 版支持精确二维绘图、三维实体与曲面建模、图纸标注、布局发布和任务自动化,并包含多套行业专业化工具组合,适用于建筑、机械、电气、工程建设及制造设计人员。














