【Laravel8】対象期間内に更新されたレコードを取得して、レコード数をCOUNTする。

どうもー今回は対象期間内に更新されたユーザーはどれくらいいるのかを取得してみました!

伝えたいこと

SQLでいうBETWEENCOUNTをLaravelのEloquentを使えるようになってみましょう。

最近技術を調べるときには色々なブログとか見て解決するのですが、最終的には公式を見てチェックしていますので、公式情報も共有しながらやっていきます!

解決したい課題

はい、今回の解決したい課題は冒頭でも共有している通り以下となります。

  1. 対象期間内に更新されてるユーザーをユーザーテーブルから取得する。
  2. 取得したユーザーは何人いるのかカウントする。

この2つっをEloquentを使ってうまくやっていきましょう~

解決方法: whereBetweenとcountメソッドを使う

whereBetweenの使い方

whereBetween

whereBetweenメソッドは、カラムの値が2つの値の間にある条件を加えます。

$users = DB::table('users')

->whereBetween(‘votes’, [1, 100])

->get();

https://readouble.com/laravel/8.x/ja/queries.html 

よし!このwhereBetweenを使ってみよう!ということで

まずどんなリクエストを送るのか….
とりあえず期間のスタートとエンドの日付をリクエストに入れる!

12月1日~12月31日の間に更新されたユーザーはだれかを知りたいわけですね。

{
    "start_date": "2021-12-01",
    "end_date": "2021-12-31"
}Code language: JSON / JSON with Comments (json)

そしたらcontrollerをかいていきましょう。

controllerの書き方

use DB;

public function checkUpdate(Request $request)
{
    //開始日と終了日を取得
    $startDate = $request->start_date;
    $endDate = $request->end_date;

    //対象期間にupdateがあったレコードを全て取得。
    $updateUsers = DB::table('users') //usersテーブルを参照
                    ->whereBetween('updated_at', [$startDate, $endDate]) //updated_atカラムを参照
                    ->get();

    //取得したレコードの数をカウントする。
    $result = count($updateUsers);

   //結果をjson形式で返す。
    return response()->json([
        'success' => true,
        'message' => 'get Success!',
        'details' => $result
    ]);
}Code language: PHP (php)

やっていることとしては、usersテーブルのupdated_atカラムを参照して、対象期間にあるレコードをいったん全て取得して$result変数に入れます。

そこから$resultに入っているレコードの数をcountメソッドを使って計算します。

後は結果を返すって感じですね。

ほお、いい感じにできたかな。

まとめ

やりたいことに対して解決方法はいくらでもあると思うので、自分で考えて解決できる力が必要ですな。

今回は解決方法としてwhereBetweenとcountメソッドを利用しました。

調べたら調べるほどたくさん答えが出てくる!

コメントを残す

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

CAPTCHA