私自身laravel コレクション配列について理解するのに時間がかかったので、この記事ではlaravel コレクション配列について理解するのに役立ったおすすめ記事を紹介していきます。
この記事を書いた人
- 新卒一年目のブリッジエンジニア
- 現プロジェクトでLaravelを使用
- LaravelとAWSを勉強中
Laravel コレクションとは
laravel コレクションについて、公式ドキュメントには以下のように書かれています。
配列データを操作するための、書きやすく使いやすいラッパーです。
上記の文章から配列を簡単に扱うものなんだなーということはわかったのですが、ラッパーって何?という状態になりました。
調べてみるとラッパーとは、どうやら本来の機能を使いやすくしてくれるもののようです。
コレクションの場合は、本来の機能には配列が当たるので、配列をより使いやすくしてくれるという意味になります。
また、コレクションとは配列をより操作しやすくするために100個以上のメソッドがあるということを公式ドキュメントから知ることができました。
ただ、まだコレクションとラッパーについて理解できておらず、言語化できない状態でモヤモヤしていました。
おすすめ記事 Laravelのコレクションとは?初心者向けにストーリー付きで解説
私はあまり言葉だけで理解するのが苦手なので、いつもわからないことがあるときは、わからない単語 イラストで解説と検索します。
そんな時にコレクションとは何かを物語で簡単に解説してくれている記事を発見しました。
初心者の自分でもコレクションがどういうものなのか大体イメージすることができたので、ぜひ目を通してみてください。
Laravelのコレクションとは?初心者向けにストーリー付きで解説
コレクションの基礎
コレクションのイメージをさらっと掴めたところで、具体的な使い方や特徴を見ていきました。
laravel コレクション配列を使用する方法は二種類あります。
collect()というヘルパー関数を使う方法とIlluminate\Support\Collectionのインスタンスを作成する方法です。
どう配列をコレクション配列に変換するのか、変換したコレクション配列を使って何ができるようになるのかについては以下の二つの記事がわかりやすかったのでおすすめです。
PHP Laravel Collectionの使い方!each/map/filter/whereを使いこなす
一つ目の記事は、実際にコレクション配列を使用すると通常の配列と比べてどれくらい便利なのかということを理解するのに役立ちます。
二つ目の記事は、コレクションメソッドの使用例がわかりやすく説明されています。
私自身、コレクションメソッドの使い方を理解するためにいくつもの記事に目を通したのですが、この記事の例が一番分かり易かったです。
またこの記事にはコレクションメソッドのうち、似ているメソッドの違いなども説明してくれているのでおすすめです。
もっとよく使われているコレクションメソッドを知りたいというかたは以下の記事に目を通してみてください。
【開発現場でよく見る】laravelのおすすめcollection9選
なんかEloquent メソッドとにてない?
laravel コレクションについてある程度理解することができたのですが、ある疑問が湧きました。
あれっなんかコレクションのメソッドってEloquentのメソッドに似てない?
どっちがどっちなの??
モヤモヤしながらいくつかのサイトを見ていると、以下のような文言を見つけました。
Laravelのコレクションは、大きく2つに分かれている
https://zenn.dev/ytksato/articles/b41cd92a624840
- 意図的にコレクション型にするやつ(基本的なコレクション)
- Eloquentで取得したデータとしてのコレクション
実はコレクションには二種類あったのです。
私がこれまで調べていたlaravel コレクションとは意図的にコレクション型にするやつだったみたいです。
Eloquent で取得したデータとしてのコレクションはEloquent:コレクションといいます。
公式ドキュメントにもきちんと説明がありました。
https://readouble.com/laravel/9.x/ja/eloquent-collections.html
get
メソッドで取得した結果や、リレーションによりアクセスした結果など、結果として複数のモデルを返すEloquentメソッドはすべて、Illuminate\Database\Eloquent\Collection
クラスのインスタンスを返します。EloquentコレクションオブジェクトはLaravelの基本的なコレクションを拡張しているため、基になるEloquentモデルの配列を流暢に操作するため使用する数十のメソッドを自然と継承します。
要するにEloquentでgetやallメソッドを使用してデータを持ってくるとIlluminate\Database\Eloquent\Collectionクラスのインスタンスが返され、取得されたデータは自動的にEloquent コレクションであるということです。
つまり以下のようなコードがあるとすると、
$user = User::get();
この$userはEloquent コレクションになるということです。
Eloquent コレクションになるということは以下のようにコレクションのメソッドも使用できるようになります。
$user = User::get()->where('gender', 'female');
逆に以下のコードのwhereメソッドはコレクションメソッドではなく、eloquentのwhereメソッドになります。
$user = User::where('gender', 'female')->get();
いやーややこしいですよね。
これまで意識していませんでしたが、実際にはeloquentコレクションはかなり使用されていたみたいです。
Eloquent についてさらっと復習したいかたは以下の記事がおすすめです。
【Laravel】Eloquent(エロクアント)の使い方やモデルとの紐付け方法
Laravel 初、中級者向けの超おすすめ書籍
私が実際に使用してとても分かりやすかった書籍を3冊を紹介します。
Laravelを真剣に学習したい方はぜひチェックしてみてください。
Laravel の教科書 バージョン10対応[加藤 じゅんこ]
PHPをある程度勉強した段階で研修でlaravelを使用するようになり、フレームワークって何?MVCモデルってなに?という状態で出会ったのが本書になります。
フレームワークに初めて触れる方、Laravelを使うと何ができるのかをまだ掴めていない方などにとっては最適解じゃないかと思えるほどの良書ですので、Laravel を勉強したい初心者の方必見の一冊になります。
難しい単語や概念も難しい言葉を用いずに説明してくれるため、初めて読んだ時には感激しました。
先ほど紹介したLaravelのコレクションとは?初心者向けにストーリー付きで解説という記事の筆者と同一人物なので、このページがわかりやすかったなあと感じた方はぜひ試してみてください。
Laravel フレームワーク Laravel Webアプリケーション開発 バージョン8.x対応[竹澤 有貴]
ある程度Laravelの知識がついてきてもっとlaravelについて詳しくなりたい!と思ったときに先輩からおすすめされた一冊になります。
Laravel の教科書で概要や基本的な知識を身につけた後に、ミドルウェアってどんな種類があるんだろう?依存性の注入、サービスコンテナってなんだろうといった疑問を持つようになったのですが、本書はそういった初心者脱却のために身につけておくべきlaravelの知識がまとまっています。
自信を持ってLaravel を使用したい、Laravel 初心者を脱却して中級者の仲間入りをしたい方必見です。
プロフェッショナルWebプログラミング Laravel[電子書籍][久保田賢二郎]
部署内の研修でこの書籍を使ってlaravelについて勉強しました。
上記の2冊とは異なる点が、この書籍はlaravelだけではなく、TailwindCSS など流行りの技術を使っている点です。
難しい箇所もあるのですが、より実践的な知識を学びたい方はこちらの書籍もおすすめです。
まとめ
どうでしたか?今回はlaravelコレクションを理解するために役立つ記事をおすすめの順番で紹介していきました。
押さえておくべきポイントは、
・Laravel コレクションは配列をより操作しやすくするためのラッパー
・コレクション配列にすると100個以上の便利なメソッドを使用できるようになる
・Laravel コレクションは自分でコレクション配列に変換するものとeloquentで取得するデータという二種類ある
この記事が少しでも皆さんのお役に立てると嬉しいです。
当サイトのおすすめ記事
フィリピンの美味しすぎるデザート10選
https://arichanstudydrt.com/pinasdessert/
【TOEIC高得点コツ】めざせ最短で800点!短期間で高得点の3つの共通点
https://arichanstudydrt.com/threecommonsofhighscoretoeic/
SNSはこちらから
twitter https://moile.twitter.com/QTzmttr1FeEYck
主に勉強記録を更新しています。
note https://note.com/arichan0/
コメント