Laravel

Laravel初心者向け!データベースから取得した一覧を簡単に降順・昇順で並べ替える方法

今回は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の魅力を実感してください。

 
※流用される場合は自己責任でお願いします。