LaravelでDBから取得表示した一覧ページのデータをリンククリックで降順(desc)・昇順(asc)でソート(並び替え)する方法をご紹介します。
※ページURLやControllerの記述は仮で設定してますので必要に応じて変更して下さい。
Contents
Laravelのバージョン
Laravelのバージョンは「Laravel Framework 6.18.39」で行いました。
Laravelのバージョンを確認するコマンドは以下の通りです。
php artisan -V
DB取得一覧データを降順・昇順でソートするのview(一覧ページ)の記述
※IDでソートさせたいのであればIDに以下の様にリンクを貼ります。
<th><a href="./listpages?sort=id&order={{ $order }}">ID</th> <th>名前</th> <th>年齢</th> <th>性別</th>
DB取得一覧データを降順・昇順でソートするController(一覧ページデータ取得)の記述
※$request(viewからのパラメーター)でsort(ソートさせたいカラム名)とorder(降順or昇順)を判別し、ソートデータを取得します。
public function listdata(Request $request) { $sort = $request->sort; $order = $request->order; //パラメータが無い場合(デフォルト)はidの降順(desc)を設定 if (is_null($sort) && is_null($order)) { $sort = 'id'; $order = 'desc'; } $orderpram = "desc"; //設定されたデータの並びがdescの場合、viewのリンクパラメータ$orderに昇順(asc)を設定 if($order=="desc"){ $orderpram="asc"; } //idのソートデータを20件取得 $listpages = Listpage::orderBy($sort, $order)->paginate(20); return view('listpages', [ 'listpages' => $listpages, 'order' => $orderpram, //viewのリンクパラメータを設定 ]); }
DB取得一覧データを降順・昇順でソートするRouteの記述
※「https:// ~ /listpages」でDB取得一覧データを降順・昇順でソートするページを表示します。ページURLは必要に応じて変更して下さい。
Route::get('/listpages', 'ListpagesController@listdata');
※流用される場合は自己責任でお願いします。
ディスプレイ広告