Masayan tech blog.

  1. ブログ記事一覧>
  2. 【Laravel】Collectionの操作:allとtoArrayの違い

【Laravel】Collectionの操作:allとtoArrayの違い

公開日

環境

  • 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の違いについて解説しています。それぞれ処理が少しことなるので違いを理解してユースケースごとに使い分けていく必要があります。