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], ], ], ]);
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();
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; }
3. Empfangen Sie Paging-Parameter im Controller, wie folgt:
$sort = $_POST['sort'] ? strval($_POST['sort']) : 'id'; $sort = $_POST['order'] == 'asc' ? $sort : '-'.$sort;
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!