web-dev-qa-db-ja.com

Laravel Eloquent:all()の注文結果

私は簡単な仕事にこだわっています。この電話からの結果を注文するだけです。

$results = Project::all();

Projectはモデルです。私はこれを試しました

$results = Project::all()->orderBy("name");

しかし、うまくいきませんでした。テーブルからすべてのデータを取得し、それらを順序付けするためのより良い方法はどれですか。

177
MatterGoal

実際にはクエリ内でこれを実行できます。

$results = Project::orderBy('name')->get();

これはすべての結果を正しい順序で返します。

319
Travis B

All()を使用する場合は、オブジェクトのコレクションが返されるため、orderBy(クエリレベル)ではなくsortBy(コレクションレベル)を使用できます。

昇順

$results = Project::all()->sortBy("name");

降順

$results = Project::all()->sortByDesc("name");

詳細についてはコレクションに関するドキュメントをチェックしてください。

https://laravel.com/docs/5.1/collections

94
Yannick Y

さらに、前の答えを強調するためだけに、2番目のパラメーターとしてどちらかを追加することで、降順のdescname__または昇順のascname__のいずれかでソートすることもできます。

$results = Project::orderBy('created_at', 'desc')->get();

お役に立てれば。

25
kehinde

2017年更新


Laravel 5.4では、クエリービルダーにorderByDesc()メソッドが追加されました。

$results = Project::orderByDesc('name')->get();
10
Sebastien Horin

Descとして日付の結果が必要ですが

$results = Project::latest('created_at')->get();
8
DsRaj

これをしてください

$results = Project::orderBy('name')->get();

これはしないでください:

$results = Project::all()->sortBy('name');

WHY?簡単に言うと、最初のアプローチは2番目のアプローチよりも高速です。

4
doncadavona

EloquentのsortByメソッドをチェックしてください。 http://laravel.com/docs/eloquent

2
Half Crazed

注意することができます:

$results = Project::select('name')->orderBy('name')->get();

これにより、次のようなクエリが生成されます。

"SELECT name FROM proyect ORDER BY 'name' ASC"

一部のアプリでは、DBが最適化されておらず、クエリがより複雑で、SQLの完成時にORDER BYを生成しないようにする必要がある場合、次のようにできます。

$result = Project::select('name')->get();
$result = $result->sortBy('name');
$result = $result->values()->all();

今結果を注文するのはphpです。

1
hkcoyant