Tobilog-Selection
こんにちは!トビログ管理人のトビログです。
今回は、Laravel8やLaravel9(それ以外でも)にて複数の項目やカラム名で並び替えをしたい場合、どうすべきか、解説をしていきます。
結論
データベースの情報をカラム名「name」と「age」で並び替えしたい場合は、
$sorted = $collection->sortBy([
['name', 'asc'],
['age', 'desc'],
]);
のように書けばOKです!
![管理人](https://i0.wp.com/tobilog.net/wp-content/uploads/2021/01/C68848CD-D4C5-460B-B744-BEFA75315F89.jpg?resize=300%2C300&ssl=1)
管理人
acsは昇順(小さいもの順)、descは降順(大きいもの順)
だよ!
また、上に書いたものが優先されるよ!
$collection = collect([
['name' => 'Taylor Otwell', 'age' => 34],
['name' => 'Abigail Otwell', 'age' => 30],
['name' => 'Taylor Otwell', 'age' => 36],
['name' => 'Abigail Otwell', 'age' => 32],
]);
$sorted = $collection->sortBy([
['name', 'asc'],
['age', 'desc'],
]);
$sorted->values()->all();
/*
[
['name' => 'Abigail Otwell', 'age' => 32],
['name' => 'Abigail Otwell', 'age' => 30],
['name' => 'Taylor Otwell', 'age' => 36],
['name' => 'Taylor Otwell', 'age' => 34],
]
*/
8.x コレクション Laravel
(上記より引用)
解説①〜そもそもコレクションって?〜
今回のコードの解説をしていきます。
まず、
$collection = collect([
['name' => 'Taylor Otwell', 'age' => 34],
['name' => 'Abigail Otwell', 'age' => 30],
['name' => 'Taylor Otwell', 'age' => 36],
['name' => 'Abigail Otwell', 'age' => 32],
]);
についてです。
おそらく、dbからの情報を受け取った結果が上の$collectionに入っているはずです。
(Userとかだったら、こんな感じ)
$user = User::all()
ここで大事なことは、以下のコードのようにしてはならないということです。
// ageが30より上のものを取り出す。
$user = User::where('age','>','30');
これではlaravelの「コレクション」という形になっていません。
そのため、上のようなコードではなく、
$user = User::where('age','>','30')->get();
とする必要があります。
![管理人](https://i0.wp.com/tobilog.net/wp-content/uploads/2021/01/C68848CD-D4C5-460B-B744-BEFA75315F89.jpg?resize=300%2C300&ssl=1)
管理人
->get();
があることで、
コレクションの形になるから、
コレクションを扱う関数sortByが使えるのね
![](https://i0.wp.com/www19.a8.net/0.gif?resize=1%2C1&ssl=1)
解説②〜sotrByの使い方〜
では、実際にコレクションを使っているsotrByの使い方について説明していきます。
sortByというのは、laravelが用意してくれているsort(=並び替え)に関する関数です
コレクション 7.x Laravel
コレクション(=多次元配列的な)のを並び替えるのにとても便利なものとなっています!
まとめ
laravel8やlaravel9(それ以外でも)にて複数の項目やカラム名で並び替えをしたい場合は、コレクションのsortに配列を渡すことでできるということが分かりました!
トビログでは他にもlaravelの記事をたくさん書いているのでぜひみてみてくださいね!
![](https://i0.wp.com/www19.a8.net/0.gif?resize=1%2C1&ssl=1)
![](https://i0.wp.com/www19.a8.net/0.gif?resize=1%2C1&ssl=1)
![](https://i0.wp.com/www16.a8.net/0.gif?resize=1%2C1&ssl=1)
![](https://i0.wp.com/tobilog.net/wp-content/uploads/2021/01/81868173-E931-44CF-9D78-6BC5E095F433-2-scaled.jpg?resize=160%2C90&ssl=1)
Laravel
「Laravel」の記事一覧です。
コメント