답변:
실제로 쿼리 내에서이 작업을 수행 할 수 있습니다.
$results = Project::orderBy('name')->get();
적절한 순서로 모든 결과를 반환합니다.
객체 컬렉션을 반환하므로 all ()을 계속 사용하려는 경우 orderBy (쿼리 수준) 대신 sortBy (컬렉션 수준)를 계속 사용할 수 있습니다.
오름차순
$results = Project::all()->sortBy("name");
내림차순
$results = Project::all()->sortByDesc("name");
자세한 내용은 컬렉션 관련 설명서를 확인하십시오.
orderBy
하면 쿼리 수준에서의 사용 에 비해 단점이 있습니까?
sortBy()
Laravel Engine (PHP) 내부 에서 컬렉션을 정렬하는 것처럼 orderBy()
데이터베이스에 수행 되는 것처럼 컬렉션을 정렬하는 것처럼 보입니다 . 거의 모든 가능한 상황에서 데이터베이스가 더 빨라질 것이며 데이터 집합이 증가함에 따라 성능의 불일치도 커질 것입니다. 나는 이것에 대한 다른 사람들의 생각을 듣고 싶습니다.
이 작업을 수행:
$results = Project::orderBy('name')->get();
이 작업을 수행하지 마십시오 :
$results = Project::all()->sortBy('name');
왜? 간단히 말해서, 첫 번째 방법은 두 번째 방법보다 빠릅니다.
sortBy
Eloquent 의 방법을 확인하십시오 : http://laravel.com/docs/eloquent
참고 :
$results = Project::select('name')->orderBy('name')->get();
다음과 같은 쿼리가 생성됩니다.
"SELECT name FROM proyect ORDER BY 'name' ASC"
DB가 최적화되지 않고 쿼리가 더 복잡하고 finish SQL에서 ORDER BY 생성을 방지해야하는 일부 앱에서는 다음을 수행 할 수 있습니다.
$result = Project::select('name')->get();
$result = $result->sortBy('name');
$result = $result->values()->all();
이제 결과를 주문하는 PHP입니다.
기록을 가져오고 주문하기 때문에 전화를 받으려면 지시가 필요합니다.
$results = Project::orderBy('name')
->get();
예:
$results = Result::where ('id', '>=', '20')
->orderBy('id', 'desc')
->get();
이 예에서 데이터는 "where"로 필터링되고 20보다 큰 레코드를 가져오고 orderBy 카탈로그를 높은 순서에서 낮은 순서로 가져옵니다.