今回はLaravelを使ってデータベースから取得した一覧データをユーザーの操作で降順や昇順に並べ替える方法をわかりやすく解説します。この技術は、ユーザー体験を向上させるために非常に役立ちます。
Laravelのバージョン確認
まずはじめに、Laravelのバージョンを確認しましょう。私がこの機能を実装したのは「Laravel Framework 6.18.39」です。あなたの環境のバージョンは以下のコマンドで確認できます。
php artisan -V
一覧ページのView編集
一覧表示するページのViewには、データをソートするためのリンクを設置します。例えば、IDでソートしたい場合は、IDの項目に以下のようにリンクを追加します。
<th><a href="./listpages?sort=id&order={{ $order }}">ID</th>
<th>名前</th>
<th>年齢</th>
<th>性別</th>
Controllerの記述
次に、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のリンクパラメータを設定
]);
}
Routeの設定
最後に、ルーティングを設定します。以下のように記述することで、ソート機能を持つ一覧ページにアクセスできるようになります。
「https:// ~ /listpages」でDB取得一覧データを降順・昇順でソートするページを表示します。
Route::get('/listpages', 'ListpagesController@listdata');
まとめ
これで、Laravelを使ったデータの降順・昇順ソート機能の基本的な実装は完了です。実際のプロジェクトに応じて、ページURLやControllerの記述は調整してください。この機能を通じて、ユーザーがより快適に情報を探せるようになります。
初心者の方も、ぜひこの機能を実装してみて、Laravelの魅力を実感してください。
※流用される場合は自己責任でお願いします。