【Laravel】複数条件の検索フォームを作る方法【orWhere】
Laravelで複数条件の検索フォームを作っていきます。
仕様としては、ヤフオクで実装されている検索フォームと同じです。
ヤフーオークション
DB内にある、カテゴリー、タイトル、本文を検索することができます。
一番基礎的な検索フォームの作り方は以下を参考にどうぞ。
【Laravel】ページネーション付き検索フォームを作成する方法
まずは検索フォームのビューを作成します。
<div class="search">
{{ Form::open(['method' => 'GET']) }}
{{ Form::input('search', 'cat', Input::old('cat', $catQuery), array('placeholder'=>'カテゴリーで検索')) }}
{{ Form::input('search', 'q', Input::old('q', $query), array('placeholder'=>'キーワードで検索')) }}
{{ Form::submit('Search', array('class' => 'btn btn-primary')) }}
{{ Form::close() }}
</div>
つぎにコントローラーを作成します。
public function search()
{
// カテゴリー検索のインプット
$catQuery = Request::get('cat');
// タイトル、本文検索のインプット
$query = Request::get('q');
if ($catQuery || $query) {
$posts = Post::where('category', 'LIKE', $catQuery)->orWhere('title', 'LIKE', '%'.$query.'%')
->get();
}else{
$posts = Post::orderBy('created_at')->get();
}
return View::make('posts.index')
->with('posts', $posts)
->with('catQuery', $catQuery)
->with('query', $query);
}
たったこれだけで完成です。