Yii2中的“自然排序”

瓦迪姆

结果,我有一个Active Data Provider和GridView,需要根据他们的teamindex对团队进行排序。A1 A2 A3 ..

我现在有

<?php $dataProvider = new ActiveDataProvider([
    'query' => Team::find()->where(['tournament_id' => $model->id]),
    'pagination' => [
        'pageSize' => 30,
    ],
    'sort' => ['defaultOrder' => ['teamindex' => SORT_ASC, 'region_id' => SORT_ASC]],
]);

echo GridView::widget([
    'dataProvider' => $dataProvider,...

结果是:A1 A10 A2 A3 ...我理解为什么以这种方式对字符串进行排序,但是我找不到找到以所需方式对字符串进行排序的解决方案。请给我一些想法

scaisEdge

您可以尝试根据已计算的列使用订单,例如:
以整数形式覆盖字符串的右侧部分(假设named中的列team_index

CONVERT(substr(team_index,2), UNSIGNED INTEGER)

        CONVERT(substr(team_index,2), UNSIGNED INTEGER)

   'query' => Team::find()->where(['tournament_id' => $model->id])
    ->orderBy([ 'left(team_index,1)' => SORT_ASC,
               'CONVERT(substr(team_index,2), UNSIGNED INTEGER)'=>SORT_DESC]),

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章