複数キーワード検索 + ページャー機能 イントロ

2018/10/12

このチュートリアルでは「複数キーワード」+「ページャー機能」のページを作成します。

3回に分けて記事を投稿します。

完成形はコチラ

今回はイントロ。このページではテーブル構成と手順についてざっと理解していきます。

まず、テーブル構成ですが以下のように構築します。

 

テーブル構成について

データベースのテーブルは以下の構成で構築します。

■部署テーブル
・部署ID
・部署名

■従業員テーブル
・従業員ID
・部署ID
・名前
・住所
・メールアドレス
・年齢
・電話番号

 

手順

手順は以下の流れで作成していきます。

1.テーブル作成

 1)マイグレーションファイル作成
 2)マイグレーションファイルの編集
 3)マイグレーション実行

2.サンプルデータの挿入(シーダー)

 1)シーダーファイル作成
 2)シーダー実行

3.複数検索ページ作成

 1)モデルの作成
 2)コントローラーの作成
 3)ビューファイル作成
 4)ルーティング

4.動作確認

 

ポイント

今回のチュートリアルでポイントとなる箇所は2点です。

【 1 】動的なSQLクエリの処理
【 2 】ページャーに検索キーワードを持ちまわせる

いづれもコントローラで記述していきます。

 

【 1 】動的なSQLクエリの処理

検索キーワードはGETパラメータでコントローラに送って処理をします。

コントローラでの処理の仕方は以下になります。

例)従業員の名前($name)と住所($adress)で検索

$query = Employee::query();

$query->where('name',$name);
$query->where('email',$address);

$employees = $query->paginate(10);

実際の検索では名前だけを入力したりして検索をかけることが想定されます。

このようにパラメータが動的(あったり、なかったり)な場合は、if(isset($name)){}などをかまします。

$query = Employee::query();

if(isset($name)){
  $query->where('name',$name);
}

if(isset($address)){
  $query->where('email',$address);
}

$employees = $query->paginate(10);

 

【 2 】ページャーに検索キーワードを持ちまわせる

例えば2ページ目に移動しても検索条件を持ちまわせる必要があります。

これは $model->appends()->render() を利用します。

{!!$employees->appends(['name'=>$name,'email'=>$email])->render()!!}

appendsの引数にクエリーを入れます。

検索項目が多いと見づらいのでコントローラでクエリーを配列にしまいそれをビューに投げて指定します。

public function employeelist(Request $req){
:
$hash = array(
  'employees' => $employees,  // SQLの結果
  'paramarray' => $this->paramarray($req),
);
  return view('employee.list')->with($hash);

ページャーを以下のように記述します。

:
{!! $employees->appends($paramarray)->render() !!} ※←ページャー
:
@foreach($employees as $employee)
:
※検索結果のレコードを出力
:
@endforeach

イントロは以上になります。

次回、手順1の「テーブル作成」に入ります。

本庄マサノリ

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

>> Twitter をフォローする

 

-チュートリアル, 中級