结果,我有一个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 ...我理解为什么以这种方式对字符串进行排序,但是我找不到找到以所需方式对字符串进行排序的解决方案。请给我一些想法
您可以尝试根据已计算的列使用订单,例如:
以整数形式覆盖字符串的右侧部分(假设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] 删除。
我来说两句