私は簡単な仕事にこだわっています。この電話からの結果を注文するだけです。
$results = Project::all();
Project
はモデルです。私はこれを試しました
$results = Project::all()->orderBy("name");
しかし、うまくいきませんでした。テーブルからすべてのデータを取得し、それらを順序付けするためのより良い方法はどれですか。
実際にはクエリ内でこれを実行できます。
$results = Project::orderBy('name')->get();
これはすべての結果を正しい順序で返します。
All()を使用する場合は、オブジェクトのコレクションが返されるため、orderBy(クエリレベル)ではなくsortBy(コレクションレベル)を使用できます。
昇順
$results = Project::all()->sortBy("name");
降順
$results = Project::all()->sortByDesc("name");
詳細についてはコレクションに関するドキュメントをチェックしてください。
さらに、前の答えを強調するためだけに、2番目のパラメーターとしてどちらかを追加することで、降順のdesc
name__または昇順のasc
name__のいずれかでソートすることもできます。
$results = Project::orderBy('created_at', 'desc')->get();
お役に立てれば。
Laravel 5.4では、クエリービルダーにorderByDesc()メソッドが追加されました。
$results = Project::orderByDesc('name')->get();
Descとして日付の結果が必要ですが
$results = Project::latest('created_at')->get();
これをしてください
$results = Project::orderBy('name')->get();
これはしないでください:
$results = Project::all()->sortBy('name');
WHY?簡単に言うと、最初のアプローチは2番目のアプローチよりも高速です。
EloquentのsortBy
メソッドをチェックしてください。 http://laravel.com/docs/eloquent
注意することができます:
$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です。