【Laravel】超簡単!クエリビルダ 特定の年、月のデータを全て取得する

2021年8月31日

こんにちは。今回はLaravelのクエリビルダで特定の年、月のデータを簡単に取得する方法を解説します。

やりたいこと

特定の年や月のデータを取得します。それは例えば以下のような条件のことを指します。

  • 作成日が2020年のデータを全て抽出する。
  • 1月が誕生日の会員データを全て抽出する。

通常のWhere条件で指定しようとすると、範囲指定したり、部分的に年や月だけ文字列で抽出して比較したりしますよね。結構面倒くさいと思います。

クエリビルダには便利な関数がある

クエリビルダを使うとこの条件をシンプルに処理することが出来ます。whereMonthとwhereYearを使ってみましょう。

// 12月生まれのユーザーを抽出
$users = DB::table('users')
                ->whereMonth('birthday', '12')
                ->get();

// 2012年以前に入社した従業員を抽出
$users = DB::table('employee')
                ->whereYear('hire_date', '<=', '2012')
                ->get();

まとめ

いかがでしょうか。シンプルな構文で実現することができました。この他にも今回紹介しませんでしたが、whereDayという関数もあり、特定の日で抽出することもできます。

Laravel

Posted by kobainmac