Laravel Collection(8) filterの代わりにwhere
「Laravel Collection(2) Collectionを返すメソッド」ではfilterメソッドを紹介しました。今度はfilterメソッドのように条件でCollectionを絞るwhereメソッドの話です。EloquentやSQL文で慣れているならwhereの方がわかりやすいかもしれません。
「Laravel Collection(2) Collectionを返すメソッド」ではfilterメソッドを紹介しました。今度はfilterメソッドのように条件でCollectionを絞るwhereメソッドの話です。EloquentやSQL文で慣れているならwhereの方がわかりやすいかもしれません。
もしかして、最新のLaravelのバージョンを紹介できるのは初めて?いつも遅れて現在のひとつ前のバージョンを紹介してきたのですが、半年に1回のリリースが年に1回となり、さらに次のバージョンのリリースが遅れて、ついに私に追いつかれてしまったのです。
前回は1行1項目で3行の入力フォームの話でした。今回は難度をアップして1行3項目で3行の入力フォームの話です。
配列値の入力、つまり複数行に同じ入力項目を持つフォームの話です。お客様の登録などのフォームとは違って、バリデーションや画面でのエラーの表示など複雑な部分が多いです。しかし、コントローラで対応するより、FormRequestを使うとすっきりしたコードとなります。
以前に「ティンカーでリクエスト(Request)」で、ティンカーにおいてRequestのオブジェクトをシミュレートできることを紹介しました。あれから数年、ヘルパー関数のrequest()にもティンカーで値を追加できる技を取得しました。
Collectionの中でとても好きなメソッドは、groupBy()です。Laravelが存在しなかった時代ではよくDBクエリから返ってくる1次元の配列をグループ化するため、汚いコードを書いて2次元の配列に変換していたものです。しかし、CollectionのgroupByがあるとコードがシンプルで綺麗に書けること書けること。
募集は終了しました。 私のお客さん食文化のビジネス拡大のために、Laravelのプログラマーを募集しています。もちろん欲しいスキルはいくつか(以下)あるのですが、私のように独立して、フリーランス系の人が欲しいです。社員となるのではなく、お互いにプロジェクトや知識を、将来共有できる人が良いです。副業として(半日など)も考慮します。
Collectionを使っての合計の計算は簡単です。例えば、注文の総個数の計算は$collection->sum('quantity')です。金額と個数の掛け算で総合計金額の計算はどうでしょう。直感的に$collection->sum('price*quantity')では、と思いますがそれはうまくいきません。さて、どう計算するのでしょう?
前回においてCollectionのeach()でUserのオブジェクトにageの属性を追加する処理をしましたが、今回はこれを発展させて、UserのCollectionにカスタムメソッドを追加します。
前回は、1つの値を返すCollectionのメソッドを紹介しましたが、今度はCollectionを返すメソッドの紹介です。まさにこれが実践でよく使われるものです。