字段排序问题:有的记录被显示两次,而有的记录则不显示 [ 2.0 版本 ]
字段排序问题:按GDP倒序排列时,"中沙群岛"这条记录显示了两次,实际上应该显示为"三沙市"。最后几条记录的GDP都为0,按正序排列在同一页中时显示正常。
"中沙群岛"在第一页中显示:
"中沙群岛"在第二页也被显示了出来,而GDP也为0的"三沙市"被忽略掉了:
正序排列时"中沙群岛"和"三沙市"都能够正常显示出来:
源代码:
namespace app\models;
use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
class CitySearch extends City
{
public function formName(){
return '';
}
public function rules()
{
return [
[['cityname','parentid', 'abbrname'], 'safe'],
];
}
public function scenarios()
{
return Model::scenarios();
}
public function search($params)
{
$query = static::find()->select(['id','cityname','parentid', 'population','gdp', 'year', 'acreage', 'popu_per_sqkm', 'gdp_per_man', 'abbrname',])->with('parent');
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' =>20,
],
'sort'=>[
'attributes'=>[
'id',
'parentid',
'cityname',
'population',
'gdp',
'year',
'acreage',
'popu_per_sqkm',
'gdp_per_man',
'abbrname',
],
'defaultOrder'=>['id'=>SORT_ASC],
],
]);
if (!($this->load($params) && $this->validate())) {
return $dataProvider;
}
$query->andFilterWhere(['=', 'parentid', $this->parentid])
->andFilterWhere(['like', 'cityname', $this->cityname]);
return $dataProvider;
}
}
请问:一条记录被显示两次的问题怎么解决?谢谢!
阿江 补充于 2018-11-14 08:46
整出来了,需要确切指定第二排序字段id的排序方式,OK
'sort'=>[
'attributes'=>[
'gdp'=>[
'asc'=>['gdp'=>SORT_ASC,'id'=>SORT_ASC],
'desc'=>['gdp'=>SORT_DESC,'id'=>SORT_DESC],
'default'=>SORT_DESC,
],
'year',
'acreage',
......
感谢 @我马上去拯救地球 的解答,谢谢!
最佳答案
-
return19931112 发布于 2018-11-12 13:07 举报
<?php public function search($params) { $tableName = static::tableName(); $query = static::find()->select([ $tableName . '.id', $tableName . '.cityname', $tableName . '.parentid', $tableName . '.population', $tableName . '.gdp', $tableName . '.year', $tableName . '.acreage', $tableName . '.popu_per_sqkm', $tableName . '.gdp_per_man', $tableName . '.abbrname',]) ->with('parent'); $dataProvider = new ActiveDataProvider([ 'query' => $query, 'pagination' => [ 'pageSize' =>20, ], 'sort'=>[ 'attributes'=>[ $tableName . .'id', $tableName . '.parentid', $tableName . '.cityname', $tableName . '.population', $tableName . '.gdp', $tableName . '.year', $tableName . '.acreage', $tableName . '.popu_per_sqkm', $tableName . '.gdp_per_man', $tableName . '.abbrname', ], 'defaultOrder'=>[$tableName . '.id'=>SORT_ASC], ], ]); if (!($this->load($params) && $this->validate())) { return $dataProvider; } $query->andFilterWhere(['=', $tableName . '.parentid', $this->parentid]) ->andFilterWhere(['like', $tableName . '.cityname', $this->cityname]); return $dataProvider; } ?>
带上表名试试
共 4 条回复return19931112 回复于 2018-11-13 15:26 回复return19931112 回复于 2018-11-13 16:16 回复尝试把分页设置大一些,看看还会出现两条一样的记录吗
其他 0 个回答
没有找到数据。
阿江
注册时间:2015-10-18
最后登录:2024-03-03
在线时长:186小时21分
最后登录:2024-03-03
在线时长:186小时21分
- 粉丝94
- 金钱16816
- 威望160
- 积分20276