Heim > PHP-Framework > YII > So sortieren Sie yii2.0-Tabellen

So sortieren Sie yii2.0-Tabellen

Freigeben: 2019-12-09 13:37:13
Original
2401 Leute haben es durchsucht

So sortieren Sie yii2.0-Tabellen

Bei der tatsächlichen Entwicklung von Yii2.0-Projekten stoßen wir häufig auf die Verwendung der mit Yii2.0 gelieferten Sortierfunktion.

Bei der Anzeige mehrerer Daten ist es in der Regel notwendig, die Daten nach benutzerdefinierten Spalten zu sortieren. Yii verwendet das yiidataSort-Objekt, um Informationen über das Sortierschema darzustellen. Insbesondere:

1. Attribute gibt die Attribute an, nach denen die Daten sortiert werden. Ein Attribut kann ein einfaches Modellattribut oder ein zusammengesetztes Attribut sein, das mehrere Modellattribute oder DB-Spalten kombiniert. Weitere Details finden Sie weiter unten.

2. attributeOrders gibt die aktuell für jedes Attribut festgelegte Sortierrichtung an.

3. Bestellungen geben die Sortierrichtung in Form von Spalten auf niedriger Ebene an.

Um yiidataSort verwenden zu können, müssen Sie zunächst deklarieren, welche Attribute sortiert werden können. Rufen Sie dann die aktuell eingestellten Sortierinformationen von attributeOrders oderorders ab und verwenden Sie diese dann zum Anpassen von Datenabfragen.

(Empfohlenes Lernen: yii-Framework )

Das Folgende ist die spezifische Methode zur Verwendung der Sortierfunktion:

1 Legen Sie die Sortierregeln fest

Achten Sie auf die Einführung der Sort-Klasse, z. B.: Verwenden Sie yiidataSort;

// 设置排序字段
        $sortObject = new Sort([
                'sort' => $sort,
                'defaultOrder' => ['id' => SORT_DESC],
                'attributes' => [
                        'id' => [
                                'asc' => ['id' => SORT_ASC],
                                'desc' => ['id' => SORT_DESC],
                        ],
                        'user_name' => [
                                'asc' => ['ecs_users.user_name' => SORT_ASC],
                                'desc' => ['ecs_users.user_name' => SORT_DESC],
                        ],
                        'add_time' => [
                                'asc' => ['add_time' => SORT_ASC],
                                'desc' => ['add_time' => SORT_DESC],
                        ],
                ],
        ]);
Nach dem Login kopieren

2. Verwenden Sie die Paging-Funktion von Yii2.0 und fügen Sie Sortierung hinzu

// 处理分页
        $queryClone = clone $query;
        $totalCount = $queryClone->count();
        $pages = new Pagination(['defaultPageSize'=>$rows,'totalCount'=>$totalCount,'pageSizeLimit'=>false]);
        $query = $query->offset($offset)
                       ->limit($pages->limit)
                       ->orderBy($sortObject->orders)
                       ->asArray()
                       ->all();
Nach dem Login kopieren

3. Ändern Sie den zugrunde liegenden Code der Yii2.0-Sortierung

Der zugrunde liegende entsprechende Quellcode: Vendor/yiisoft/yii2.0/data/Sort.php

1. Fügen Sie der Sort-Klasse ein Attribut hinzu: public $sort;

2. Fügen Sie im Quellcode den folgenden Code zu Zeile 249 hinzu: (implementieren Sie den Beitrag, um Paging-Parameter zu erhalten)

  // get请求获取数组为空,则调用自定义属性sort。用于满足post获取后处理自定义参数
 if(!isset($params[$this->sortParam])){
    $params[$this->sortParam] = $this->sort;
  }
Nach dem Login kopieren

3. Empfangen Sie Paging-Parameter im Controller, wie folgt:

$sort = $_POST['sort'] ? strval($_POST['sort']) : 'id';
$sort = $_POST['order'] == 'asc' ? $sort : '-'.$sort;
Nach dem Login kopieren

Hinweis: Die ID in Yii2.0 stellt den korrekten Wert entsprechend der ID dar. Sortierung in der Reihenfolge, -id bedeutet Sortierung in umgekehrter Reihenfolge nach ID. Dies ist auch der Grund, warum Aussage 2 oben so gehandhabt wird.

Das obige ist der detaillierte Inhalt vonSo sortieren Sie yii2.0-Tabellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage