環境
- windows10
- DockerDesktop for Win 3.5.x
- Laravel 8.x
- PHP 8.x
- VsCode
- gitbash 2.32.0.1
allとtoArrayの違い
- どちらもLaravelのCollectionを配列に変換する
all()
- Collectionを配列に変換されるだけなので、中身のオブジェクトはそのまま
- 特に理由がない場合はこちらを利用する
>>> ModelUser::query()->get()->all() => [ App\Models\ModelUser {#3703 id: 1, name: "Shaniya Grimes", email: "damore.karolann@example.com", .. }, App\Models\ModelUser {#3704 id: 2, name: "Isobel Fisher", email: "lang.deron@example.net", .. } .. ]
toArray()
- Collectionを再帰的に配列に変換するので、中身のオブジェクトも配列になる
- コレクションのデータ量は大きいので、メモリを消費する。コレクションで集計処理する場合はtoArray()で配列化してからするとよい。
- また、中身がオブジェクトではないので、foreachなどでイテレートしつつ要素にアクセスするときは、user->idとはできない。user["id"]のようになる
>>> ModelUser::query()->get()->toArray() => [ [ "id" => 1, "name" => "Shaniya Grimes", "email" => "damore.karolann@example.com" .. ], [ "id" => 2, "name" => "Isobel Fisher", "email" => "lang.deron@example.net", .. ], ]
以上です。
まとめ
いかがでしたでしょうか。本記事では、LaravelにおけるCollectionの操作として使用できるメソッドallとtoArrayの違いについて解説しています。それぞれ処理が少しことなるので違いを理解してユースケースごとに使い分けていく必要があります。