ThinkPHP 的动态排序,说起来不算复杂,但真正动手做的时候,不少人会踩进同一个坑里——模型静态配置搞不定,实时请求的排序参数又容易搞丢,安全上更是漏洞百出。下面这几个要点,基本覆盖了从“能跑”到“稳跑”的必经之路。

动态排序必须在查询链式调用中设置

模型类里写 $defaultOrder 或者在 initialize() 里调 order()?没用。框架根本不认这套。真正生效的时机只有一个:查询发起的那一刻。

字段和方向必须白名单硬校验

用户传来的 sort_fieldsort_dir 属于不可信输入,直接丢进 order() 等于把 SQL 注入的钥匙交给对方。

分页与参数透传要同步处理

启用分页后,用户选好的排序参数很容易在翻页时丢失——翻到第二页,排序就恢复到默认了。这个问题非常常见,处理起来也简单:

多字段排序统一用关联数组

有时候需要按多个字段分级排序,比如先按状态升序,再按创建时间降序。这时候不能拆成多次 order() 调用,后一次会覆盖前一次。

thinkphp排序怎么实现动态排序 开发技巧解析

本文转载于:https://www.php.cn/faq/2816978.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。