2017-11-02 1 views
1

私は、 "1-3,4,5,6-10,12-15"などの値を持つ列 'pages'を持っています。私は配列を並べ替えたいと思います。CakePHPのVirtual Propertyで配列を並べる方法はありますか?

結果は正しくありません: "12-15、1-3、4、5、6-10"。

だから、私はつもりはこのように仮想プロパティを作成してい考え出し:

protected $_virtual = ['proper_order']; 

protected function _getProperOrder() 
{ 
    return intval(strtok($this->_properties['pages'], '-')); 
} 

しかし、すべての仮想プロパティを使用して配列をソートする方法はありますか?

+1

2つのオプションがあります。まず、dbから配列へのすべての結果を取得して並べ替えます。ここで 'usort'とあなたの' - > properOrder'フィールドを使用できます。 2番目は、 'substr'、' pos'のような文字列関数を使ってdbレベルでソートすることです。最初の数字を切り捨てます。 – teran

答えて

1

私はこれを得た。私はコレクションを使用し、それは動作しています。

$collection = new Collection($articles); 
$result = $collection->sortBy('proper_order', SORT_ASC); 
+1

'$ articles'変数の取得方法によっては、そのプロセスの一部として' sortBy'を呼び出すことができます。例えば'$ article = $ this->記事 - > find() - >ここで([...]) - > sortBy(...);' –

関連する問題