【Laravel5.7】Eloquent Collectionの使い方
こんにちは。
ニシザワです。
久々の投稿です。
先日Laravel LT Osakaで発表してきました。 発表が意外にも好評だったのですが、一つ一つのメソッドの説明をさらっとしたので、ここで詳しく説明しようと思います。
長くなると思うので、ここではまとめのページとします。
ここではLaravel5.7について説明します。
⇒中身がすべてModel ClassのインスタンスになっているCollectionです。
基本的にIlluminate\Support\Collectionを継承しているのでSupportCollectionのメソッドはすべて使えます。
EloquentのBuilderを使って複数レコード(複数Model)を取得した場 合はEloquentCollectionで取得します。
⇒ModelのPrimary Key(ID)で管理されているのが特徴です。
詰め込み方次第ですが、基本的に同じModelインスタンスが入っていること前提なんで、タイプヒントができます。
使い方はSupportCollectionと同じです。
map(callable $callback)
関数のreturn値にModelインスタンスではないものを返すとSupportCollectionになって返ってきます。
型指定しているかたはおきおつけください。
それでは、以上となります。
ニシザワです。
久々の投稿です。
先日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
使い方はSupportCollectionと同じです。
map(callable $callback)
関数のreturn値にModelインスタンスではないものを返すとSupportCollectionになって返ってきます。
型指定しているかたはおきおつけください。
それでは、以上となります。