簡単な仕事にこだわっています。この通話の結果を注文するだけです
$results = Project::all();
Project
モデルはどこですか。私はこれを試しました
$results = Project::all()->orderBy("name");
しかし、それはうまくいきませんでした。テーブルからすべてのデータを取得して順序付けするためのより良い方法はどれですか?
簡単な仕事にこだわっています。この通話の結果を注文するだけです
$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");
詳細については、コレクションに関するドキュメントをご覧ください。
orderBy
、クエリレベルで使用する場合と比べて欠点がありますか?
sortBy()
間、コレクションの並べ替えがLaravelエンジン(PHP)内でorderBy()
行われているように感じます。確かに、データベースは考えられるほとんどすべての状況でより高速になるでしょう。また、データセットが増えると、パフォーマンスのばらつきも大きくなります。これについて他の人の考えを聞いてみたいです。
Laravel 5.4では、クエリビルダーにorderByDesc()メソッドを追加しました。
$results = Project::orderByDesc('name')->get();
これを行う:
$results = Project::orderBy('name')->get();
これをしないでください:
$results = Project::all()->sortBy('name');
どうして? 簡単に言うと、最初のアプローチは2番目のアプローチよりも高速です。
sortBy
Eloquent のメソッドを確認してください: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です。
レコードとorderByがカタログに表示されるため、取得するには呼び出しが必要です。
$results = Project::orderBy('name')
->get();
例:
$results = Result::where ('id', '>=', '20')
->orderBy('id', 'desc')
->get();
この例では、データは「where」でフィルタリングされ、20を超えるレコードと、orderByカタログが上位から下位へと並べられます。