Yii2.0 프로젝트를 실제로 개발하다 보면 Yii2.0에 포함된 정렬 기능을 사용하는 경우를 자주 접하게 됩니다.
여러 데이터를 표시할 때 일반적으로 사용자가 지정한 열에 따라 데이터를 정렬해야 합니다. Yii는 yiidataSort 개체를 사용하여 정렬 체계에 대한 정보를 나타냅니다. 특히:
1. 속성은 데이터가 정렬되는 속성을 지정합니다. 속성은 단순 모델 속성일 수도 있고, 여러 모델 속성이나 DB 열을 결합하는 복합 속성일 수도 있습니다. 자세한 내용은 아래에 설명되어 있습니다.
2. attributeOrders는 각 속성에 현재 설정된 정렬 방향을 제공합니다.
3. 순서는 하위 열 형태로 정렬 방향을 제공합니다.
yiidataSort를 사용하려면 먼저 어떤 속성을 정렬할 수 있는지 선언해야 합니다. 그런 다음 attributeOrders 또는 Orders에서 현재 설정된 정렬 정보를 가져온 다음 이를 사용하여 데이터 쿼리를 사용자 정의합니다.
(추천 학습: yii 프레임워크)
정렬 기능을 사용하는 구체적인 방법은 다음과 같습니다.
1. 정렬 규칙을 설정합니다.
다음과 같은 Sort 클래스 도입에 주의하세요. 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. Yii2.0 사용 페이징 기능 포함 및 정렬 추가
// 处理分页 $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. Yii2.0 정렬의 기본 코드 수정
기본 해당 소스 코드: Vendor/yiisoft/yii2.0/data/Sort .php
1. Sort 클래스에 속성을 추가합니다: public $sort;
2. 소스 코드의 약 249번째 줄에 다음 코드를 추가합니다. (페이징 매개변수를 얻기 위해 post 구현)
// get请求获取数组为空,则调用自定义属性sort。用于满足post获取后处理自定义参数 if(!isset($params[$this->sortParam])){ $params[$this->sortParam] = $this->sort; }
3.
$sort = $_POST['sort'] ? strval($_POST['sort']) : 'id'; $sort = $_POST['order'] == 'asc' ? $sort : '-'.$sort;
참고: Yii2.0의 id는 양의 순서로 ID 기준 정렬을 나타내고, -id는 ID를 역순으로 정렬한다는 의미입니다. 이는 위의 문 2가 이런 방식으로 처리되는 이유이기도 합니다.
위 내용은 yii2.0 테이블을 정렬하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!