Edited at

Laravelでcreated_atの日付を範囲指定してデータを取得する(自分用)


メモ程度に書く


bladeファイルに検索フォームを設置

選択された20xx/xx/xx ~ 20xx/xx/xxを取得する


date.blade.php

<form action="hashtag" method="GET">

<input type="date" name="from" placeholder="from_date">
<span class="mx-3 text-grey">~</span>
<input type="date" name="until" placeholder="until_date">
<button type="submit">検索</button>
</form>


Controllerで条件分岐してクラスを呼び出す

とりあえず$requestを取得して$request['from']$request['until']があれば関数を呼び出す。っていう簡単な作りです。


DatesController.php

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Date;

class DatesController extends Controller
{
public function index(Request $request)
{
//日付が選択されたら
if (!empty($request['from']) && !empty($request['until'])) {
//ハッシュタグの選択された20xx/xx/xx ~ 20xx/xx/xxのレポート情報を取得
$date = Date::getDate($request['from'], $request['until']);
} else {
//リクエストデータがなければそのままで表示
$date = Date::get();
}

//取得したデータをviewに渡す
return view('date', [
"date" => $date
]);
}
}



Modelにクラスを書く

ささっと書いただけなので色々と抜けてるけど許して


Date.php

    //ハッシュタグレポートを取得

public static function getDate($from, $until)
{
//created_atが20xx/xx/xx ~ 20xx/xx/xxのデータを取得
$date = Date::whereBetween("created_at", [$from, $until])->get();

return $date;
}


こんな感じで取得できるはず