開発ブログ

株式会社Nextatのスタッフがお送りする技術コラムメインのブログ。

電話でのお問合わせ 075-744-6842 ([月]-[金] 10:00〜17:00)

  1. top >
  2. 開発ブログ >
  3. PHP >
  4. Laravel >
  5. 【Laravel5.7】Eloquent Collectionの使い方

【Laravel5.7】Eloquent Collectionの使い方

こんにちは。
ニシザワです。

久々の投稿です。
先日Laravel LT Osakaで発表してきました。 発表が意外にも好評だったのですが、一つ一つのメソッドの説明をさらっとしたので、ここで詳しく説明しようと思います。

長くなると思うので、ここではまとめのページとします。
ここではLaravel5.7について説明します。

EloquentのCollectionとは

Illuminate\Database\Eloquent\Collection
⇒中身がすべてModel ClassのインスタンスになっているCollectionです。

基本的にIlluminate\Support\Collectionを継承しているのでSupportCollectionのメソッドはすべて使えます。

EloquentのBuilderを使って複数レコード(複数Model)を取得した場 合はEloquentCollectionで取得します。

EloquentのCollectionって何が便利なの?

Model周りに最適化されたメソッドが用意されているので使い勝手がいいです。

⇒ModelのPrimary Key(ID)で管理されているのが特徴です。

詰め込み方次第ですが、基本的に同じModelインスタンスが入っていること前提なんで、タイプヒントができます。

    $models->each(function(Model $model){
        $model->hoge = "fuga";
        $model->save();
    )}
functionの引数に型指定をすることでタイプヒントを可能にしています。

EloquentのCollectionメソッド説明

そでは、直腸的なEloquentCollectionのメソッドを説明していきたいと思います。
  • find($key, $default = null) : Model|Collection
  • load(array|string $relation) : Collection
  • loadCount(array|string $relation) : Collection
  • loadMissing(array|string $relation) : Collection
  • loadMorph(string $relation, array $relations) : Collection
  • add(Model $item) : Collection
  • contains($key, $operator = null, $value = null) : bool
  • merge(\ArrayAccess|array $items) : Collection
  • map(callable $callback) : Collection|SupportCollection
  • fresh(string|array $with = []) : Collection|SupportCollection
  • diff(\ArrayAccess|array $items) : Collection
  • intersect(\ArrayAccess|array $items) : Collection
  • unique(string|callable|null $key = null, bool $strict = false) : Collection|SupportCollection
  • only(array|string $keys) : Collection
  • except(array|string $keys) : Collection
  • makeHidden(array|string $attributes) : Collection
  • makeVisible(array|string $attributes) : Collection
  • getDictionary(\ArrayAccess|array|null $items) : array

※メソッドの解説は随時追加します。

気をつけること

  • pluck
  • keys
  • zip
  • collapse
  • flatten
  • flip
  • pad
こちらについては、Modelがけるわけではないため必ずSupportCollectionが返ってきます。
使い方はSupportCollectionと同じです。

map(callable $callback)
関数のreturn値にModelインスタンスではないものを返すとSupportCollectionになって返ってきます。
型指定しているかたはおきおつけください。

それでは、以上となります。
TOPに戻る