0 follower

クラス yii\data\Sort

継承yii\data\Sort » yii\base\BaseObject
実装yii\base\Configurable
利用可能なバージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/data/Sort.php

Sortは、ソートに関連する情報を表現します。

データが1つまたは複数の属性に従ってソートされる必要がある場合、Sortを使用してソート情報を表現し、ソートアクションにつながる適切なハイパーリンクを生成できます。

典型的な使用例は以下のとおりです。

public function actionIndex()
{
    $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();

    return $this->render('index', [
         'models' => $models,
         'sort' => $sort,
    ]);
}

ビュー

// display links leading to sort actions
echo $sort->link('name') . ' | ' . $sort->link('age');

foreach ($models as $model) {
    // display $model here
}

上記では、ソートをサポートする2つの$attributesnameage)を宣言しています。Sortオブジェクトで指定された順序でクエリ結果がソートされるように、ソート情報をArticleクエリに渡します。ビューでは、対応する属性でソートされたデータを含むページにつながる2つのハイパーリンクを表示します。

Sortの詳細と使用方法については、ソートに関するガイド記事をご覧ください。

パブリックプロパティ

継承されたプロパティを非表示

プロパティ 説明 定義元
$attributeOrders array 属性名でインデックス付けされたソート方向。 yii\data\Sort
$attributes array ソートが許可されている属性のリスト。 yii\data\Sort
$defaultOrder array|null 現在のリクエストが順序を指定していない場合に使用される順序。 yii\data\Sort
$enableMultiSort boolean ソートを複数の属性に同時に適用できるかどうか。 yii\data\Sort
$modelClass string|null link()メソッドが属性のラベルを取得するために使用するyii\base\Modelベースのクラスの名前。 yii\data\Sort
$orders array 列(キー)と対応するソート方向(値)。 yii\data\Sort
$params array|null 現在のソート方向を取得し、新しいソートURLを作成するために使用する必要があるパラメータ(name => value)。 yii\data\Sort
$route string|null ソートされたコンテンツを表示するためのコントローラーアクションのルート。 yii\data\Sort
$separator string ソートする必要がある異なる属性を区切るために使用される文字。 yii\data\Sort
$sortFlags integer ArrayHelper::multisort()に渡される4番目のパラメータの値を制御できるようにします yii\data\Sort
$sortParam string どの属性をどの方向にソートするかを指定するパラメータの名前。 yii\data\Sort
$urlManager yii\web\UrlManager|null ソートURLを作成するために使用されるURLマネージャー。 yii\data\Sort

パブリックメソッド

継承されたメソッドを非表示

メソッド 説明 定義元
__call() クラスメソッドではない名前付きメソッドを呼び出します。 yii\base\BaseObject
__construct() コンストラクター。 yii\base\BaseObject
__get() オブジェクトプロパティの値を返します。 yii\base\BaseObject
__isset() プロパティが設定されているかどうか(つまり、定義されていてnullでないかどうか)を確認します。 yii\base\BaseObject
__set() オブジェクトプロパティの値を設定します。 yii\base\BaseObject
__unset() オブジェクトプロパティをnullに設定します。 yii\base\BaseObject
canGetProperty() プロパティを読み取ることができるかどうかを示す値を返します。 yii\base\BaseObject
canSetProperty() プロパティを設定できるかどうかを示す値を返します。 yii\base\BaseObject
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
createSortParam() 指定された属性のソート変数を作成します。 yii\data\Sort
createUrl() 指定された属性でデータをソートするためのURLを作成します。 yii\data\Sort
getAttributeOrder() 現在のリクエストで指定された属性のソート方向を返します。 yii\data\Sort
getAttributeOrders() 現在リクエストされているソート情報を返します。 yii\data\Sort
getOrders() 列と対応するソート方向を返します。 yii\data\Sort
hasAttribute() ソート定義が名前付き属性によるソートをサポートしているかどうかを示す値を返します。 yii\data\Sort
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\BaseObject
hasProperty() プロパティが定義されているかどうかを示す値を返します。 yii\base\BaseObject
init() $attributesプロパティを正規化します。 yii\data\Sort
link() 指定された属性でソートするためのソートアクションにリンクするハイパーリンクを生成します。 yii\data\Sort
setAttributeOrders() 現在のソート情報を設定します。 yii\data\Sort

保護されたメソッド

継承されたメソッドを非表示

メソッド 説明 定義元
parseSortParam() $sortParamの値をソート属性の配列に解析します。 yii\data\Sort

プロパティの詳細

継承されたプロパティを非表示

$attributeOrders public プロパティ

属性名でインデックスされたソートの方向。ソートの方向は昇順の場合はSORT_ASC、降順の場合はSORT_DESCのいずれかになります。このプロパティの型はゲッターとセッターで異なることに注意してください。詳細はgetAttributeOrders()setAttributeOrders() を参照してください。

public array $attributeOrders null
$attributes public プロパティ

ソート可能な属性のリスト。その構文は以下の例で説明できます。

[
    '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',
    ],
]

上記の例では、agename の2つの属性が宣言されています。age 属性は単純な属性で、以下と同等です。

'age' => [
    'asc' => ['age' => SORT_ASC],
    'desc' => ['age' => SORT_DESC],
    'default' => SORT_ASC,
    'label' => Inflector::camel2words('age'),
]

2.0.12以降では、特定のソート方向を次のように直接ソート式として指定することもできます。

'name' => [
    'asc' => '[[last_name]] ASC NULLS FIRST', // PostgreSQL specific feature
    'desc' => '[[last_name]] DESC NULLS LAST',
]

name 属性は複合属性です。

  • name キーは、ソートアクションにつながるURLに表示される属性名を表します。
  • ascdesc 要素は、それぞれ昇順と降順で属性をソートする方法を指定します。これらの値は、データをソートする際の実際の列と方向を表します。
  • default 要素は、属性が現在ソートされていない場合(デフォルト値は昇順)に、どの方向で属性をソートするかを指定します。
  • label 要素は、ソートリンクを作成するためにlink()を呼び出すときに使用するラベルを指定します。設定されていない場合は、yii\helpers\Inflector::camel2words() がラベルを取得するために呼び出されます。HTMLエンコードされないことに注意してください。

Sortオブジェクトがすでに作成されている場合は、すべての属性を設定するために完全なフォーマットのみを使用できることに注意してください。各属性には、ascdesc の要素を含める必要があります。

public array $attributes = []
$defaultOrder public プロパティ

現在のリクエストで順序が指定されていない場合に使用される順序。配列キーは属性名、配列値は対応するソート方向です。例えば、

[
    'name' => SORT_ASC,
    'created_at' => SORT_DESC,
]

$attributeOrders も参照してください。

public array|null $defaultOrder null
$enableMultiSort public プロパティ

ソートを複数の属性に同時に適用できるかどうか。デフォルトはfalseで、データは毎回1つの属性でしかソートできないことを意味します。

public boolean $enableMultiSort false
$modelClass public プロパティ (バージョン2.0.49から利用可能)

link()メソッドが属性のラベルを取得するために使用するyii\base\Modelベースのクラスの名前。詳細についてはlink()メソッドを参照してください。

public string|null $modelClass null
$orders public プロパティ

列(キー)とそれに対応するソート方向(値)。これは、DBクエリを構築するためにyii\db\Query::orderBy()に渡すことができます。

public array $orders null
$params public プロパティ

現在のソート方向を取得し、新しいソートURLを作成するために使用する必要があるパラメータ(name => value)。設定されていない場合は、代わりに$_GETが使用されます。

すべてのリンクにハッシュを追加するには、array_merge($_GET, ['#' => 'my-hash'])を使用します。

$sortParamでインデックス付けされた配列要素が、現在のソート方向と見なされます。要素が存在しない場合、デフォルトの順序が使用されます。

こちらも参照してください。

public array|null $params null
$route public プロパティ

ソートされたコンテンツを表示するためのコントローラアクションのルート。設定されていない場合は、現在リクエストされているルートを使用することを意味します。

public string|null $route null
$separator public プロパティ

ソートする必要がある異なる属性を区切るために使用される文字。

public string $separator ','
$sortFlags public プロパティ (バージョン2.0.33から利用可能)

ArrayHelper::multisort()に渡される4番目のパラメータの値を制御できるようにします

public integer $sortFlags SORT_REGULAR
$sortParam public プロパティ

どの属性をどの方向でソートするかを指定するパラメータの名前。デフォルトはsortです。

$paramsも参照してください。

public string $sortParam 'sort'
$urlManager public プロパティ

ソートURLの作成に使用されるURLマネージャー。設定されていない場合、urlManagerアプリケーションコンポーネントが使用されます。

メソッドの詳細

継承されたメソッドを非表示

__call() public メソッド

定義元: yii\base\BaseObject::__call()

クラスメソッドではない名前付きメソッドを呼び出します。

不明なメソッドが呼び出されたときに暗黙的に呼び出されるPHPのマジックメソッドであるため、このメソッドを直接呼び出さないでください。

public mixed __call ( $name, $params )
$name string

メソッド名

$params array

メソッドのパラメータ

return mixed

メソッドの戻り値

throws yii\base\UnknownMethodException

不明なメソッドを呼び出した場合

                public function __call($name, $params)
{
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__construct() public メソッド

定義元: yii\base\BaseObject::__construct()

コンストラクター。

デフォルトの実装では、次の2つのことを行います。

  • 指定された構成$configでオブジェクトを初期化します。
  • init()を呼び出します。

このメソッドが子クラスでオーバーライドされる場合、次の推奨事項があります。

  • コンストラクタの最後のパラメータは、ここでの$configのように構成配列であること。
  • コンストラクタの最後に親の実装を呼び出すこと。
public void __construct ( $config = [] )
$config array

オブジェクトのプロパティを初期化するために使用される名前と値のペア

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__get() public メソッド

定義元: yii\base\BaseObject::__get()

オブジェクトプロパティの値を返します。

このメソッドは、$value = $object->property;を実行したときに暗黙的に呼び出されるPHPマジックメソッドであるため、直接呼び出さないでください。

__set()も参照してください。

public mixed __get ( $name )
$name string

プロパティ名

return mixed

プロパティの値

throws yii\base\UnknownPropertyException

プロパティが定義されていない場合

throws yii\base\InvalidCallException

プロパティが書き込み専用の場合

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter();
    } elseif (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

            
__isset() public メソッド

定義元: yii\base\BaseObject::__isset()

プロパティが設定されているかどうか(つまり、定義されていてnullでないかどうか)を確認します。

このメソッドは、isset($object->property)を実行したときに暗黙的に呼び出されるPHPマジックメソッドであるため、直接呼び出さないでください。

プロパティが定義されていない場合、falseが返されることに注意してください。

https://www.php.net/manual/en/function.isset.phpも参照してください。

public boolean __isset ( $name )
$name string

プロパティ名またはイベント名

return boolean

指定されたプロパティが設定されている(nullではない)かどうか。

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    return false;
}

            
__set() public メソッド

定義元: yii\base\BaseObject::__set()

オブジェクトプロパティの値を設定します。

このメソッドは、$object->property = $value;を実行したときに暗黙的に呼び出されるPHPマジックメソッドであるため、直接呼び出さないでください。

__get()も参照してください。

public void __set ( $name, $value )
$name string

プロパティ名またはイベント名

$value mixed

プロパティの値

throws yii\base\UnknownPropertyException

プロパティが定義されていない場合

throws yii\base\InvalidCallException

プロパティが読み取り専用の場合

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter($value);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    } else {
        throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
    }
}

            
__unset() public メソッド

定義元: yii\base\BaseObject::__unset()

オブジェクトプロパティをnullに設定します。

このメソッドは、unset($object->property)を実行したときに暗黙的に呼び出されるPHPマジックメソッドであるため、直接呼び出さないでください。

プロパティが定義されていない場合、このメソッドは何もしないことに注意してください。プロパティが読み取り専用の場合は、例外がスローされます。

https://www.php.net/manual/en/function.unset.phpも参照してください。

public void __unset ( $name )
$name string

プロパティ名

throws yii\base\InvalidCallException

プロパティが読み取り専用の場合。

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Unsetting read-only property: ' . get_class($this) . '::' . $name);
    }
}

            
canGetProperty() public メソッド

定義元: yii\base\BaseObject::canGetProperty()

プロパティを読み取ることができるかどうかを示す値を返します。

プロパティが読み取り可能であるのは、次のいずれかの場合です。

  • クラスに、指定された名前に関連付けられたgetterメソッドがある場合(この場合、プロパティ名は大文字と小文字を区別しません)。
  • クラスに、指定された名前のメンバー変数がある場合($checkVarsがtrueの場合)。

canSetProperty()も参照してください。

public boolean canGetProperty ( $name, $checkVars true )
$name string

プロパティ名

$checkVars boolean

メンバー変数をプロパティとして扱うかどうか

return boolean

プロパティを読み取ることができるかどうか

                public function canGetProperty($name, $checkVars = true)
{
    return method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name);
}

            
canSetProperty() public メソッド

定義元: yii\base\BaseObject::canSetProperty()

プロパティを設定できるかどうかを示す値を返します。

プロパティが書き込み可能であるのは、次のいずれかの場合です。

  • クラスに、指定された名前に関連付けられたsetterメソッドがある場合(この場合、プロパティ名は大文字と小文字を区別しません)。
  • クラスに、指定された名前のメンバー変数がある場合($checkVarsがtrueの場合)。

canGetProperty()も参照してください。

public boolean canSetProperty ( $name, $checkVars true )
$name string

プロパティ名

$checkVars boolean

メンバー変数をプロパティとして扱うかどうか

return boolean

プロパティを書き込むことができるかどうか

                public function canSetProperty($name, $checkVars = true)
{
    return method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name);
}

            
className() public static メソッド
2.0.14以降は非推奨。PHP >=5.5では、代わりに::classを使用してください。

定義元: yii\base\BaseObject::className()

このクラスの完全修飾名を返します。

public static string className ( )
return string

このクラスの完全修飾名。

                public static function className()
{
    return get_called_class();
}

            
createSortParam() public メソッド

指定された属性のソート変数を作成します。

新しく作成されたソート変数は、指定された属性でソートするためのURLを作成するために使用できます。

public string createSortParam ( $attribute )
$attribute string

属性名

return string

ソート変数の値

throws yii\base\InvalidConfigException

指定された属性が $attributes で定義されていない場合

                public function createSortParam($attribute)
{
    if (!isset($this->attributes[$attribute])) {
        throw new InvalidConfigException("Unknown attribute: $attribute");
    }
    $definition = $this->attributes[$attribute];
    $directions = $this->getAttributeOrders();
    if (isset($directions[$attribute])) {
        if ($this->enableMultiSort) {
            if ($directions[$attribute] === SORT_ASC) {
                $direction = SORT_DESC;
            } else {
                $direction = null;
            }
        } else {
            $direction = $directions[$attribute] === SORT_DESC ? SORT_ASC : SORT_DESC;
        }
        unset($directions[$attribute]);
    } else {
        $direction = isset($definition['default']) ? $definition['default'] : SORT_ASC;
    }
    if ($this->enableMultiSort) {
        if ($direction !== null) {
            $directions = array_merge([$attribute => $direction], $directions);
        }
    } else {
        $directions = [$attribute => $direction];
    }
    $sorts = [];
    foreach ($directions as $attribute => $direction) {
        $sorts[] = $direction === SORT_DESC ? '-' . $attribute : $attribute;
    }
    return implode($this->separator, $sorts);
}

            
createUrl() public メソッド

指定された属性でデータをソートするためのURLを作成します。

このメソッドは、$attributeOrders で与えられた現在のソートステータスを考慮します。たとえば、現在のページが既に指定された属性で昇順にデータをソートしている場合、作成されたURLは、指定された属性で降順にデータをソートするページにつながります。

こちらも参照してください。

public string createUrl ( $attribute, $absolute false )
$attribute string

属性名

$absolute boolean

絶対URLを作成するかどうか。デフォルトは false です。

return string

ソート用のURL。属性が無効な場合はfalse。

throws yii\base\InvalidConfigException

属性が不明な場合

                public function createUrl($attribute, $absolute = false)
{
    if (($params = $this->params) === null) {
        $request = Yii::$app->getRequest();
        $params = $request instanceof Request ? $request->getQueryParams() : [];
    }
    $params[$this->sortParam] = $this->createSortParam($attribute);
    $params[0] = $this->route === null ? Yii::$app->controller->getRoute() : $this->route;
    $urlManager = $this->urlManager === null ? Yii::$app->getUrlManager() : $this->urlManager;
    if ($absolute) {
        return $urlManager->createAbsoluteUrl($params);
    }
    return $urlManager->createUrl($params);
}

            
getAttributeOrder() public メソッド

現在のリクエストで指定された属性のソート方向を返します。

public integer|null getAttributeOrder ( $attribute )
$attribute string

属性名

return integer|null

属性のソート方向。昇順の場合は SORT_ASC、降順の場合は SORT_DESC のいずれかになります。属性が無効な場合、またはソートする必要がない場合は Null が返されます。

                public function getAttributeOrder($attribute)
{
    $orders = $this->getAttributeOrders();
    return isset($orders[$attribute]) ? $orders[$attribute] : null;
}

            
getAttributeOrders() public メソッド

現在リクエストされているソート情報を返します。

public array getAttributeOrders ( $recalculate false )
$recalculate boolean

ソート方向を再計算するかどうか

return array

属性名でインデックス付けされたソート方向。ソート方向は、昇順の場合は SORT_ASC、降順の場合は SORT_DESC のいずれかになります。

                public function getAttributeOrders($recalculate = false)
{
    if ($this->_attributeOrders === null || $recalculate) {
        $this->_attributeOrders = [];
        if (($params = $this->params) === null) {
            $request = Yii::$app->getRequest();
            $params = $request instanceof Request ? $request->getQueryParams() : [];
        }
        if (isset($params[$this->sortParam])) {
            foreach ($this->parseSortParam($params[$this->sortParam]) as $attribute) {
                $descending = false;
                if (strncmp($attribute, '-', 1) === 0) {
                    $descending = true;
                    $attribute = substr($attribute, 1);
                }
                if (isset($this->attributes[$attribute])) {
                    $this->_attributeOrders[$attribute] = $descending ? SORT_DESC : SORT_ASC;
                    if (!$this->enableMultiSort) {
                        return $this->_attributeOrders;
                    }
                }
            }
            return $this->_attributeOrders;
        }
        if (empty($this->_attributeOrders) && is_array($this->defaultOrder)) {
            $this->_attributeOrders = $this->defaultOrder;
        }
    }
    return $this->_attributeOrders;
}

            
getOrders() public メソッド

列と対応するソート方向を返します。

public array getOrders ( $recalculate false )
$recalculate boolean

ソート方向を再計算するかどうか

return array

列(キー)とそれに対応するソート方向(値)。これは、DBクエリを構築するためにyii\db\Query::orderBy()に渡すことができます。

                public function getOrders($recalculate = false)
{
    $attributeOrders = $this->getAttributeOrders($recalculate);
    $orders = [];
    foreach ($attributeOrders as $attribute => $direction) {
        $definition = $this->attributes[$attribute];
        $columns = $definition[$direction === SORT_ASC ? 'asc' : 'desc'];
        if (is_array($columns) || $columns instanceof \Traversable) {
            foreach ($columns as $name => $dir) {
                $orders[$name] = $dir;
            }
        } else {
            $orders[] = $columns;
        }
    }
    return $orders;
}

            
hasAttribute() public メソッド

ソート定義が名前付き属性によるソートをサポートしているかどうかを示す値を返します。

public boolean hasAttribute ( $name )
$name string

属性名

return boolean

ソート定義が、指定された名前の属性によるソートをサポートしているかどうか。

                public function hasAttribute($name)
{
    return isset($this->attributes[$name]);
}

            
hasMethod() public メソッド

定義元: yii\base\BaseObject::hasMethod()

メソッドが定義されているかどうかを示す値を返します。

デフォルトの実装は、php関数 method_exists() の呼び出しです。phpのマジックメソッド __call() を実装した場合、このメソッドをオーバーライドできます。

public boolean hasMethod ( $name )
$name string

メソッド名

return boolean

メソッドが定義されているかどうか

                public function hasMethod($name)
{
    return method_exists($this, $name);
}

            
hasProperty() public メソッド

定義元: yii\base\BaseObject::hasProperty()

プロパティが定義されているかどうかを示す値を返します。

プロパティは、次の場合は定義されています。

  • クラスが、指定された名前に関連付けられたゲッターまたはセッターメソッドを持っている場合(この場合、プロパティ名は大小文字を区別しません)。
  • クラスに、指定された名前のメンバー変数がある場合($checkVarsがtrueの場合)。

こちらも参照してください。

public boolean hasProperty ( $name, $checkVars true )
$name string

プロパティ名

$checkVars boolean

メンバー変数をプロパティとして扱うかどうか

return boolean

プロパティが定義されているかどうか

                public function hasProperty($name, $checkVars = true)
{
    return $this->canGetProperty($name, $checkVars) || $this->canSetProperty($name, false);
}

            
init() public メソッド

$attributesプロパティを正規化します。

public void init ( )

                public function init()
{
    $attributes = [];
    foreach ($this->attributes as $name => $attribute) {
        if (!is_array($attribute)) {
            $attributes[$attribute] = [
                'asc' => [$attribute => SORT_ASC],
                'desc' => [$attribute => SORT_DESC],
            ];
        } elseif (!isset($attribute['asc'], $attribute['desc'])) {
            $attributes[$name] = array_merge([
                'asc' => [$name => SORT_ASC],
                'desc' => [$name => SORT_DESC],
            ], $attribute);
        } else {
            $attributes[$name] = $attribute;
        }
    }
    $this->attributes = $attributes;
}

            
link() public メソッド

指定された属性でソートするためのソートアクションにリンクするハイパーリンクを生成します。

ソート方向に基づいて、生成されたハイパーリンクのCSSクラスに "asc" または "desc" が追加されます。

public string link ( $attribute, $options = [] )
$attribute string

データのソートに使用する属性名。

$options array

ハイパーリンクタグの追加のHTML属性。ハイパーリンクのラベルとして使用される特別な属性 label があります。これが設定されていない場合、$attributes で定義されたラベルが使用されます。ラベルが定義されていない場合、$modelClass のインスタンスから($modelClass がnullでない場合)、または yii\helpers\Inflector::camel2words() を使用して属性名から生成されます。HTMLエンコードされないことに注意してください。

return string

生成されたハイパーリンク

throws yii\base\InvalidConfigException

属性が不明な場合

parseSortParam() protected メソッド (バージョン 2.0.12 から利用可能)

$sortParamの値をソート属性の配列に解析します。

形式は、昇順の場合は属性名のみ、降順の場合は属性名の前に - を付ける必要があります。

たとえば、次の戻り値は、category での昇順ソートと、created_at での降順ソートになります。

[
    'category',
    '-created_at'
]

こちらも参照してください。

protected array parseSortParam ( $param )
$param string

$sortParam の値。

return array

有効なソート属性。

                protected function parseSortParam($param)
{
    return is_scalar($param) ? explode($this->separator, $param) : [];
}

            
setAttributeOrders() public メソッド (バージョン 2.0.10 から利用可能)

現在のソート情報を設定します。

public void setAttributeOrders ( $attributeOrders, $validate true )
$attributeOrders array|null

属性名でインデックス付けされたソート方向。ソート方向は、昇順の場合は SORT_ASC、降順の場合は SORT_DESC のいずれかになります。

$validate boolean

$attributes$enableMultiSort に対して、指定された属性の順序を検証するかどうか。検証が有効になっている場合、不正なエントリは削除されます。

                public function setAttributeOrders($attributeOrders, $validate = true)
{
    if ($attributeOrders === null || !$validate) {
        $this->_attributeOrders = $attributeOrders;
    } else {
        $this->_attributeOrders = [];
        foreach ($attributeOrders as $attribute => $order) {
            if (isset($this->attributes[$attribute])) {
                $this->_attributeOrders[$attribute] = $order;
                if (!$this->enableMultiSort) {
                    break;
                }
            }
        }
    }
}