laravelセレクトボックスを使った昇順降順の機能を作りたい
解決したいこと
laravelでサイトを作っています。
作ったサイトを追加する機能を作ったのですが、作ったサイトをcreated_at
で並べ替えをする機能を加えて作ろうと思ったのですが、うまくいきません。
<form method="post"action="{{ action('SitesController@index') }}">
@csrf
<select name="sortSites" id="sortBySites">
<option value="asc">新着順</option>
<option value="desc">投稿順</option>
</select>
<input type="submit">
</form>
function index(Request $request){
if($request->sortSites == 'asc'){
return view("sites.site_index")->with("sites", Site::orderBy('created_at', 'desc')->get());
} elseif($request->sortSites == 'desc') {
return view("sites.site_index")->with("sites", Site::orderBy('created_at', 'asc')->get());
} else {
return view("sites.site_index")->with("sites", Site::latest()->get());
}
} //汚くてすみません;
上のコードで自分が作ったサイトを並び替えることができると思ったのですが、うまくいきません。
投稿順を選んでsubmitしても並び替えされないですし、セレクトボックスの値も初期値の新着順に戻ってしまいます。
いろいろ試してみると、if文内のelse
の部分をlatestからoldestにすると並び替えされました。つまり、ifが機能しておらず、問答無用でelseにもってかれているようなのですが、理解ができていません。
どなたか助言をいただけると幸いです。
ゆくゆくはページの更新なしで並び替えを、部分的に更新して作りたいと思っているのですが、