1、查看禅道的任务列表页面,其排序默认为基于 ID 降序排列,如图1

2、点击 消耗 字段后,三角正立显示为深色,表示当前排序为基于 消耗 升序排列,且其值相同的情况下,再基于 ID 升序排列,如图2

3、再次点击 消耗 字段后,三角倒立显示为深色,表示当前排序为基于 消耗 降序排列,且其值相同的情况下,再基于 ID 降序排列,如图3

4、如果希望恢复至默认排序,即基于 ID 降序排列,则点击 2 次 ID 字段后(第 1 次为升序,第 2 次为降序),三角倒立显示为深色,表示当前排序为基于 ID 降序排列,如图4

5、数据提供者的相应配置如下,通过 yii\data\Sort::$defaultOrder 来指定默认的排序为基于 ID 降序排列
return Yii::createObject([
'class' => ActiveDataProvider::className(),
'query' => $query,
'pagination' => [
'params' => $requestParams,
],
'sort' => [
'defaultOrder' => [
'id' => SORT_DESC,
],
'params' => $requestParams,
],
]);
6、GET 请求:http://api.pcs-api.localhost/v1/plans ,生成 SQL , SQL 语句当中的 ORDER BY 子句基于 ID 降序排列,如图5

SELECT `pa_plan`.* FROM `pa_plan` GROUP BY `pa_plan`.`id` ORDER BY `id` DESC LIMIT 20
7、GET 请求:http://api.pcs-api.localhost/v1/plans?sort=importance ,生成 SQL , SQL 语句当中的 ORDER BY 子句基于 importance 升序排列(期望为基于 importance 与 id 升序排列),如图6

SELECT `pa_plan`.* FROM `pa_plan` GROUP BY `pa_plan`.`id` ORDER BY `importance` LIMIT 20
8、GET 请求:http://api.pcs-api.localhost/v1/plans?sort=-importance ,生成 SQL , SQL 语句当中的 ORDER BY 子句基于 importance 降序排列(期望为基于 importance 与 id 降序排列),如图7

SELECT `pa_plan`.* FROM `pa_plan` GROUP BY `pa_plan`.`id` ORDER BY `importance` DESC LIMIT 20
9、数据提供者的相应配置调整如下,通过 yii\data\Sort::$defaultOrder 来指定 id 属性的 asc(基于 id 升序排列) 和 desc(基于 id 降序排列) 元素;importance 属性的 asc(基于 importance 与 id 升序排列) 和 desc(基于 importance 与 id 降序排列) 元素;is_united 属性的 asc(基于 is_united 与 id 升序排列) 和 desc(基于 is_united 与 id 降序排列) 元素
return Yii::createObject([
'class' => ActiveDataProvider::className(),
'query' => $query,
'pagination' => [
'params' => $requestParams,
],
'sort' => [
'defaultOrder' => [
'id' => SORT_DESC,
],
'attributes' => [
'id' => [
'asc' => ['id' => SORT_ASC],
'desc' => ['id' => SORT_DESC],
'default' => SORT_ASC,
'label' => Yii::t('model/plan', 'ID'),
],
'importance' => [
'asc' => ['importance' => SORT_ASC, 'id' => SORT_ASC],
'desc' => ['importance' => SORT_DESC, 'id' => SORT_DESC],
'default' => SORT_ASC,
'label' => Yii::t('model/plan', 'Importance'),
],
],
'params' => $requestParams,
],
]);
10、GET 请求:http://api.pcs-api.localhost/v1/plans ,生成 SQL , SQL 语句当中的 ORDER BY 子句基于 ID 降序排列
SELECT `pa_plan`.* FROM `pa_plan` GROUP BY `pa_plan`.`id` ORDER BY `id` DESC LIMIT 20
11、GET 请求:http://api.pcs-api.localhost/v1/plans?sort=importance ,生成 SQL , SQL 语句当中的 ORDER BY 子句基于 importance 与 id 升序排列,如图8

SELECT `pa_plan`.* FROM `pa_plan` GROUP BY `pa_plan`.`id` ORDER BY `importance`, `id` LIMIT 20
12、GET 请求:http://api.pcs-api.localhost/v1/plans?sort=-importance ,生成 SQL , SQL 语句当中的 ORDER BY 子句基于 importance 与 id 降序排列,如图9

SELECT `pa_plan`.* FROM `pa_plan` GROUP BY `pa_plan`.`id` ORDER BY `importance` DESC, `id` DESC LIMIT 20
13、GET 请求:http://api.pcs-api.localhost/v1/plans?sort=id ,生成 SQL , SQL 语句当中的 ORDER BY 子句基于 id 升序排列,如图10

SELECT `pa_plan`.* FROM `pa_plan` GROUP BY `pa_plan`.`id` ORDER BY `id` LIMIT 20
14、GET 请求:http://api.pcs-api.localhost/v1/plans?sort=-id ,生成 SQL , SQL 语句当中的 ORDER BY 子句基于 id 降序排列,如图11

SELECT `pa_plan`.* FROM `pa_plan` GROUP BY `pa_plan`.`id` ORDER BY `id` DESC LIMIT 20
15、GET 请求:http://api.pcs-api.localhost/v1/plans?sort=create_user_id ,生成 SQL , SQL 语句当中的 ORDER BY 子句基于 id 降序排列(默认排序),并未基于 create_user_id 升序排列(因为 create_user_id 属性未定义),如图12

SELECT `pa_plan`.* FROM `pa_plan` GROUP BY `pa_plan`.`id` ORDER BY `id` DESC LIMIT 20
PHP / Laravel / Yii2 老项目维护与长期技术支持
如果你的 PHP / Laravel / Yii2 项目已经上线,但遇到原开发离职、Bug 长期无人修复、接口不稳定、性能下降、代码难以接手等问题,可以联系我做一次远程技术排查。
适合以下情况:
✅ 老旧 PHP 系统无人维护
✅ Laravel / Yii2 项目 Bug 修复
✅ 后台管理系统小功能迭代
✅ RESTful API 接口排查
✅ MySQL / Redis / Nginx 性能问题
✅ 长期远程兼职维护
可先从一次小问题开始:
✅ 线上报错排查
✅ 接口异常分析
✅ 慢查询与性能瓶颈定位
✅ 代码结构初步评估
✅ 部署环境与日志检查
如需咨询,请联系我,并注明:PHP 维护咨询。
联系方式:
Telegram:@shuijingwan
微信:13980074657
邮箱:shuijingwanwq@gmail.com
