Yii2-Datenanbieter-Standardsortierung

Lesezeit: 2 Minuten

Benutzer-Avatar
Sarvar N

In Yii 1.1 funktioniert dieser Code für die Standardsortierung:

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

Wie kann die Standardsortierung in Yii2 eingestellt werden?

Versucht unten Code, aber kein Ergebnis:

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

Benutzer-Avatar
Alex

Ich denke, es gibt eine richtige Lösung. Konfigurieren Sie die yii\data\Sort Objekt:

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

Offizieller Dokumentlink

  • Diese Lösung funktioniert, aber die Suche im Index funktioniert jetzt nicht.

    – Roby Sotini

    16. November 2017 um 12:14 Uhr

Oder

              $dataProvider->setSort([
        'defaultOrder' => ['topic_order'=>SORT_DESC]'Attribute' => [...

  • It’s more compatible with default GII output

    – userlond

    May 11, 2015 at 5:39

user avatar
Parth Chavda

defaultOrder contain a array where key is a column name and value is a SORT_DESC or SORT_ASC that’s why below code not working.

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

Der richtige Weg

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

Hinweis: Wenn eine Abfrage bereits die orderBy-Klausel angibt, werden die neuen Bestellanweisungen der Endbenutzer (über die Sortierkonfiguration) an die vorhandene orderBy-Klausel angehängt. Alle vorhandenen Limit- und Offset-Klauseln werden durch die Paginierungsanforderung von Endbenutzern (über die Paginierungskonfiguration) überschrieben.

Sie können detailliert aus lernen
Yii2 Leitfaden des Datenanbieters

Sortieren Durch Übergeben des Sort-Objekts in der Abfrage

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

wenn Sie CRUD (Index) haben und Sie die Standardsortierung Ihres Controllers für GridView oder ListView oder mehr festlegen müssen … Beispiel

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,
    ]);
}

Sie müssen hinzufügen

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

Versuchen Sie es mit diesem

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

$sort = $dataProvider->getSort();

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

$dataProvider->setSort($sort);

Benutzer-Avatar
johannchopin

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

Benutzer-Avatar
Pather

Wie in der angegeben führenmüssen Sie das Sortierverhalten eines Datenanbieters angeben, indem Sie seine Sortiereigenschaften konfigurieren, die den Konfigurationen für yii\data\Sort entsprechen

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

  • Doppelte Antwort. Die Antwort stackoverflow.com/a/22994046/1030070 aus dem Jahr 2014 hat bereits denselben Code und wurde als richtige Antwort markiert.

    – Nestor

    18. Juli um 17:49 Uhr

1355860cookie-checkYii2-Datenanbieter-Standardsortierung

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy