Yii2 डेटा प्रदाता डिफ़ॉल्ट छँटाई


99

Yii 1.1 में यह कोड डिफ़ॉल्ट सॉर्टिंग के लिए काम करता है:

$dataProvider = new CActiveDataProvider('article',array(
    'sort'=>array(
        'defaultOrder'=>'id DESC',
    ),
));

कैसे डिफ़ॉल्ट छँटाई Yii2 में सेट किया जा सकता है?

कोड के नीचे कोशिश की, लेकिन कोई परिणाम नहीं:

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

जवाबों:


175

मुझे लगता है कि वहाँ उचित समाधान है। yii\data\Sortऑब्जेक्ट कॉन्फ़िगर करें :

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

आधिकारिक डॉक्टर लिंक


यह समाधान काम करता है लेकिन सूचकांक में खोज अब काम नहीं करती है।
रॉबी सोतिनी


15

defaultOrder में एक सरणी होती है जहां कुंजी एक कॉलम नाम है और मान एक 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,
        ]
    ],
]);

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

आप डेटा प्रदाता के Yii2 गाइड से सीख सकते हैं

क्रमबद्ध करके क्वेरी में ऑब्जेक्ट को सॉर्ट करके

 $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();

6

यदि आपके पास CRUD (इंडेक्स) है और आपको GridView, या ListView, या अधिक के लिए अपने नियंत्रक को डिफ़ॉल्ट सॉर्ट करने की आवश्यकता है - उदाहरण

public function actionIndex()
{
    $searchModel = new NewsSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    // set default sorting
    $dataProvider->sort->defaultOrder = ['id' => SORT_DESC];

    return $this->render('index', [
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
    ]);
}

आपको जोड़ने की आवश्यकता है

$dataProvider->sort->defaultOrder = ['id' => SORT_DESC];

2

इस एक की कोशिश करो

$dataProvider = new ActiveDataProvider([
    'query' => $query,
]);

$sort = $dataProvider->getSort();

$sort->defaultOrder = ['id' => SORT_ASC];

$dataProvider->setSort($sort);



-2
    $modelProduct       =   new Product();
    $shop_id            =   (int)Yii::$app->user->identity->shop_id;

    $queryProduct       =   $modelProduct->find()
                            ->where(['product.shop_id'  => $shop_id]);


    $dataProviderProduct    =   new ActiveDataProvider([
                                    'query'         =>  $queryProduct,
                                     'pagination' => [ 'pageSize' => 10 ],
                                    'sort'=> ['defaultOrder' => ['id'=>SORT_DESC]]
                                ]); 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.