gpt4 book ai didi

mysql - Yii2 自然排序

转载 作者:行者123 更新时间:2023-11-29 05:09:39 26 4
gpt4 key购买 nike

我一直在摸不着头脑,无法为我的生活想出如何做以下事情

我需要一个 VARCHAR 文件,以便能够使用自然排序在 gridview 中进行排序,即按顺序编号

SELECT * FROM test ORDER BY `number`; 

系统目前的运作方式。并会把这个

# id, number
1, 1
206, 10
97, 100
98, 102
99, 103
103, 104
104, 105
105, 106
106, 107
107, 108
108, 109
10, 11
109, 110
110, 111
111, 112

在 MySQL 中,如果我想要自然排序,那么我可以这样写

SELECT * FROM test ORDER BY `number`+0;

然后我得到

# id, number
1, 1
2, 2
3, 3
4, 4
5, 5
6, 6
7, 7
8, 8
9, 9
206, 10
10, 11
11, 12
12, 13

所以数字是有序的。

我如何在 Yii2 中实现这一点?

问候

利亚姆

根据下面的答案,我能够在搜索模型中使用以下内容

    $dataProvider->sort->attributes['number'] = 
[
'asc' => ['LENGTH(number)' => SORT_ASC, 'number'=>SORT_ASC],
'desc' => ['LENGTH(number)' => SORT_DESC, 'number'=>SORT_DESC],
];

最佳答案

在 DataProvider 配置中试试这个(我不确定你是否可以传递 MySQL 函数而不是简单的列名)。

// ...
'sort' => [
'defaultOrder' => [
'LENGTH(number)' => SORT_ASC,
'number' => SORT_ASC,
],
],

一般来说,首先检查长度,然后再检查值应该会给你 natsort 效果。

关于mysql - Yii2 自然排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41698082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com