Laravel8 取得したレコードセットからレコードを検索

※データベースからデータを抽出する機能に思えますが、コレクション機能(クラス)の話です。

取得したレコードセットをそのままforeachで回して表示出来る場合は問題ないが、そうでない場合はちょっと面倒い。

例えば、1ヶ月分の何かをデータベースから取得して表示したい場合、1日から31日まで全てレコードがあるか分からないし、日にちがキーにもなっていない。かと言ってview側で1日から31日のループのなかで1件ずつレコードを取得するのもデータベースに負荷がかかってしまう。

そういう場合は、コントローラーで対象の1ヶ月分のレコードを取得してviewに渡し、コレクションクラスのメソッドを使い対象の日のレコードを取り出すのが良い気がする。

※設計や状況に異なりますし、もっと良い方法があると思います。

コントローラー側で、2022年2月のレコードを取得してviewに渡す。

$informations = Information::where('yyyymm', '202202')->get();

view側で対象の日付のレコードを抽出する。

$target = $informations->firstWhere('yyyymmdd', '2022-02-13');

コレクションクラスにはデータ操作に強力なメソッドが沢山用意されているので1度目を通して見るのがオススメです!

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です