CRUDアプリの作成 STEP8:「検索機能」の作成

前回は「削除機能」ページの作成をしました。

今回は「検索機能」を作成していきます。

(※検索対象は名前と Email にします。)

 

今回のゴール

【 今回の作業 】
・ビューの改修
・コントローラの改修

 

手順

 

INDEX

 

1)コントローラの改修

以前に作成した CrudController.php にある「一覧表示」の箇所を改修していきます。


/**
 * 一覧表示
 */
public function getIndex(Request $rq)
{
    //キーワード受け取り
    $keyword = $rq->input('keyword');

    //クエリ生成
    $query = \App\Student::query();

    //もしキーワードがあったら
    if(!empty($keyword))
    {
        $query->where('email','like','%'.$keyword.'%');
        $query->orWhere('name','like','%'.$keyword.'%');
    }

    // 全件取得 +ページネーション
    $students = $query->orderBy('id','desc')->paginate(5);
    return view('student.list')->with('students',$students)->with('keyword',$keyword);
}

 

2)ビューの改修

検索結果画面に推移しても、検索キーワードが表示されるように設定します。


<!-- 検索フォーム -->
<form method="get" action="" class="form-inline">
    <div class="form-group">
        <input type="text" name="keyword" class="form-control" value="{{$keyword}}" placeholder="名前やメールアドレス">
    </div>
    <div class="form-group">
        <input type="submit" value="検索" class="btn btn-info" style="margin-left: 15px; color:white;">
    </div>
</form>

 

3)ページネーションの改修

ページネーションに検索キーワードの持ち回りの設定をします。


<!-- ページネーション -->
{!! $students->appends(['keyword'=>$keyword])->render() !!}

 
この辺りの解説は以下のページ「クエリービルダーまとめ」にある

「8. ページネーションをつける」
「25. 検索 keyword(パラメータ)の持ち回り」

に記載しています。

 

4)動作確認

ブラウザを開いて http://localhost/student/list にアクセスします。

上記のようにレコードの検索がされればOKです。

 
以上です。

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-チュートリアル, 初級