どうもー今回は対象期間内に更新されたユーザーはどれくらいいるのかを取得してみました!
Table of Contents
伝えたいこと
SQLでいうBETWEENとCOUNTをLaravelのEloquentを使えるようになってみましょう。
最近技術を調べるときには色々なブログとか見て解決するのですが、最終的には公式を見てチェックしていますので、公式情報も共有しながらやっていきます!
解決したい課題
はい、今回の解決したい課題は冒頭でも共有している通り以下となります。
- 対象期間内に更新されてるユーザーをユーザーテーブルから取得する。
- 取得したユーザーは何人いるのかカウントする。
この2つっをEloquentを使ってうまくやっていきましょう~
解決方法: whereBetweenとcountメソッドを使う
whereBetweenの使い方
whereBetween
whereBetweenメソッドは、カラムの値が2つの値の間にある条件を加えます。
$users = DB::table('users')
->whereBetween(‘votes’, [1, 100])
https://readouble.com/laravel/8.x/ja/queries.html
->get();
よし!この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メソッドを利用しました。
調べたら調べるほどたくさん答えが出てくる!