ホームページ  >  記事  >  PHPフレームワーク  >  yii2.0 テーブルをソートする方法

yii2.0 テーブルをソートする方法

尚
オリジナル
2019-12-09 13:37:132368ブラウズ

yii2.0 テーブルをソートする方法

Yii2.0 プロジェクトの実際の開発では、Yii2.0 に付属しているソート機能を使用する場面によく遭遇します。

複数のデータを表示する場合、通常はユーザーが指定した列に従ってデータを並べ替える必要があります。 Yii は yii\data\Sort オブジェクトを使用して、ソートスキームに関する情報を表します。特に:

1.attributes は、データの並べ替えに基づいて属性を指定します。属性は、単純なモデル属性、または複数のモデル属性または DB 列を組み合わせた複合属性にすることができます。詳細については以下で説明します。

2.attributeOrders は、各属性に現在設定されている並べ替え方向を示します。

3. Orders は、下位レベルの列に従って並べ替え方向を指定します。

yii\data\Sort を使用するには、まずどの属性をソートできるかを宣言する必要があります。次に、現在設定されている並べ替え情報をattributeOrdersまたはordersから取得し、それらを使用してデータ クエリをカスタマイズします。

(推奨学習: yii フレームワーク)

ソート機能の具体的な使用方法は次のとおりです:

1. ソート ルールを設定します

use yii\data\Sort;

// 设置排序字段
        $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 のような Sort クラスの導入に注意してください。Yii2.0 のページング機能を使用し、sorting

// 处理分页
        $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 行目あたりに次のコードを追加します: (ページング パラメーターを取得するポストを実装します)

  // 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。