2014-04-10 10 views

उत्तर

122

मुझे लगता है कि वहाँ उचित समाधान

$dataProvider = new ActiveDataProvider([ 
    'query' => $query, 
    'sort'=> ['defaultOrder' => ['topic_order'=>SORT_ASC]] 
]); 

Official doc link

+0

यह समाधान काम करता है जैसे खोज मॉडल लेकिन सूचकांक में खोज संशोधित कर सकते हैं में से गुजर क्रमबद्ध वस्तु द्वारा अनुक्रमित किया जा रहा से Yii2 Guide of Data Provider

सीख सकते हैं अब काम नहीं करता है –

28

या

 $dataProvider->setSort([ 
     'defaultOrder' => ['topic_order'=>SORT_DESC], 
     'attributes' => [... 
+0

यह डिफ़ॉल्ट जीआईआई आउटपुट के साथ अधिक संगत है – userlond

5

डिफ़ॉल्ट ऑर्डर में एक सरणी है जहां कुंजी कॉलम नाम है और मान SORT_DESC या SORT_ASC है, इसलिए नीचे कोड काम नहीं कर रहा है।

$dataProvider = new ActiveDataProvider([ 
     'query' => $query, 
     'sort' => ['defaultOrder'=>'topic_order asc'] 
    ]); 

सही रास्ता

$dataProvider = new ActiveDataProvider([ 
    'query' => $query, 
    'sort' => [ 
     'defaultOrder' => [ 
      'topic_order' => SORT_ASC, 
     ] 
    ], 
]); 

नोट: एक प्रश्न पहले से ही orderBy खंड, नए आदेश अंतिम उपयोगकर्ताओं (तरह विन्यास के माध्यम से) द्वारा दिए गए निर्देशों का निर्दिष्ट करता है मौजूदा orderBy से जोड़ दिए जाएंगे खंड। किसी भी मौजूदा सीमा और ऑफ़सेट क्लॉज को अंतिम उपयोगकर्ताओं (पेजिनेशन कॉन्फ़िगरेशन के माध्यम से) के पेजिनेशन अनुरोध द्वारा ओवरराइट किया जाएगा।

आप विस्तार क्वेरी

$sort = new Sort([ 
     'attributes' => [ 
      'age', 
      'name' => [ 
       'asc' => ['first_name' => SORT_ASC, 'last_name' => SORT_ASC], 
       'desc' => ['first_name' => SORT_DESC, 'last_name' => SORT_DESC], 
       'default' => SORT_DESC, 
       'label' => 'Name', 
      ], 
     ], 
    ]); 

    $models = Article::find() 
     ->where(['status' => 1]) 
     ->orderBy($sort->orders) 
     ->all(); 
0

आप इस

$dataProvider = new ActiveDataProvider([ 
     'query' => $query, 
     'sort' => [ 
      'defaultOrder' => ['user_id =5 asc, document_id asc'] 
     ] 
    ]);