2013-07-17 2 views
3

'Eloquent ORM'에서 'natural order'를 어떻게 얻을 수 있습니까? 테이블에 나는 열 '텍스트'(문자열) 있습니다.
일반 순서 : 모델 :: 해 orderBy ('텍스트') Eloquent ORM, Laravel의 Natural ORDER 4

'value 1' 
'value 12' 
'value 23' 
'value 3' 
'value 8' 

내가이 필요합니다

'value 1' 
'value 3' 
'value 8' 
'value 12' 
'value 23' 

어떤 아이디어?

답변

6

당신은 원시 쿼리를 추가하고 같은 것을 할 수있는 :

Model::orderBy(DB::raw('LENGTH(text), text')); 
+0

니스. 두 문장은 무엇을 의미합니까? 하나는 행 이름과 다른 하나는 참조합니까? –

1

Laravel를 들어이 또한 작동합니다

$collection = $collection->sortBy('order', SORT_NATURAL, true); 
+0

나는 sortBy가 두 번째 (또는 세 번째) 매개 변수를 받아 들였다는 것을 깨닫지 못했습니다. 이것은 내 Laravel 5.2 Collection 정렬 문제를 해결하는 데 도움이되었습니다. Laravel 문서는 이것이 옵션 (https://laravel.com/docs/5.2/collections#method-sortby)으로 표시하지 않지만, Collection.php 파일의 sortBy 함수는 SORT_REGULAR를 기본 두 번째 매개 변수로 사용함을 보여줍니다 (그것은 뒤늦은 지각에서 의미가 있었다). 나는 끝났다 : Item :: where ($ itemQueryArray) -> with ($ modelName) -> get() -> sortBy ($ sortText, SORT_STRING | SORT_FLAG_CASE); –

관련 문제