2016-01-19 2 views
0

мне нужно сделать по умолчанию сортировки по идентификатору, мы не показываем идентификатор в сетке, поэтому сортировка по умолчанию не работает вот мой код для сортировкиYii2 сортировка по умолчанию не работают

public function search($params) 
    { 
     $this->load($params); 
     $query = new \yii\db\Query; 
     $expression = new \yii\db\Expression('CASE WHEN b.status = 1 THEN "Active" WHEN b.status = 2 THEN "Inactive" END AS status'); 
     $query->select(['b.image','bl.name',$expression,'b.brand_id']) 
       ->from('brand AS b') 
       ->join('INNER JOIN', 
        'brand_lang AS bl', 
        'bl.brand_id = b.brand_id AND lang_id = 1'); 

     $query->andFilterWhere([    
      'status' => $this->status, 
     ]); 
     $query->andFilterWhere(['like', 'name', $this->name]); 

     $command = $query->createCommand(); 
     $data = $command->queryAll();  
     $dataProvider = new \yii\data\ActiveDataProvider([ 
      'query' => $query, 
      'totalCount' => count($data), 
      'sort' => [ 
       'attributes' => [ 
        'name' => [ 
         'asc' => ['name' => SORT_ASC, 'name' => SORT_ASC], 
         'desc' => ['name' => SORT_DESC, 'name' => SORT_DESC], 
         'default' => SORT_DESC, 
         'label' => 'Name', 
        ], 
        'status' => [ 
         'asc' => ['status' => SORT_ASC, 'status' => SORT_ASC], 
         'desc' => ['status' => SORT_DESC, 'status' => SORT_DESC], 
         'default' => SORT_DESC, 
         'label' => 'Status', 
        ], 
        'brand_id' => [ 
         'asc' => ['brand_id' => SORT_ASC, 'brand_id' => SORT_ASC], 
         'desc' => ['brand_id' => SORT_DESC, 'brand_id' => SORT_DESC], 
         'default' => SORT_ASC, 
         'label' => 'Brand', 
        ], 
        'defaultOrder' => ['brand_id' => SORT_ASC] 
       ], 
      ], 
      'pagination' => [ 
       'pageSize' => 20, 
      ], 
     ]); 
     return $dataProvider; 
    } 

Может кто-нибудь пожалуйста, скажите мне, что это за решение? Я сделал много, но не прибегая к помощи сделал успеха

ответ

1

Использование $dataProvider->sort->attributes['attribute_name']:

$dataProvider = new ActiveDataProvider([ 
     'query' => $query, 

     'sort' => [ 
      'defaultOrder' => ['brand_id' => SORT_ASC] 
     ], 
    ]); 

    $dataProvider->sort->attributes['name'] = [ 
     'asc' => ['name' => SORT_ASC], 
     'desc' => ['name' => SORT_DESC], 
    ]; 
+0

Вы ответили правильно, но что стандартный, почему он не используется внутри массива сортировки. –

+0

@HiteshJangid. [DefaultOrder] (http://www.yiiframework.com/doc-2.0/yii-data-sort.html#$defaultOrder-detail) –

Смежные вопросы