2017-11-02 8 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

두 가지 옵션이 있습니다. 첫 번째 옵션은 db에서 배열로 결과를 모두 가져온 다음 정렬하는 것입니다. 여기서는'usort'와 당신의'-> properOrder' 필드를 사용할 수 있습니다. 두 번째는'substr','pos'와 같은 문자열 함수를 사용하여 db 레벨에서 정렬하는 것입니다. 첫 번째 숫자를 자르십시오. – teran

답변

1

확인. 알 겠어. 나는 Collection을 사용했고 작동 중이다.

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

'$ articles' 변수를 얻는 방법에 따라 프로세스의 일부로'sortBy'를 호출 할 수 있습니다 . 예 : $ article = $ this-> articles-> find() -> 여기서 ([...]) -> sortBy (...);' –