Laravelで検索フォームを実装してみる

Laravelで検索フォームを実装してみます。

準備

一部書き換えていますが、以前投稿した下記記事をベースに進めます。
Laravelでページネーションを実装してみる | cly7796.net

テーブルは以下のような内容になっています。

try-to-implement-the-search-form-in-the-laravel01

まずはデータベースからデータを取得して、一覧を表示させてみます。

app\Animation.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Autumn2016 extends Model
{
    protected $table = 'autumn2016s';
}

app\Http\routes.php

Route::get('/search', 'SearchController@getIndex');

app\Http\Controllers\SearchController.php

<?php

namespace App\Http\Controllers;

use App\Autumn2016;

class SearchController extends Controller
{
    public function getIndex()
    {
        $data = Autumn2016::get();
        return view('search.index', compact('data'));
    }
}

resources\views\search\index.blade.php

@foreach($data as $item)
<div>
    <div>{{{ $item->id }}}</div>
    <div>{{{ $item->title }}}</div>
    <div>{{{ $item->category }}}</div>
    <div>{{{ $item->production }}}</div>
    <div>{{{ $item->actor }}}</div>
</div>
<hr>
@endforeach

データベースから取得したデータがすべて表示されました。
 

検索フォームの追加

検索フォームを追加して、データを絞り込めるようにしてみます。

resources\views\search\index.blade.php

{!! Form::open(['method' => 'GET']) !!}
    {!! Form::text('s', null) !!}
    {!! Form::submit('検索') !!}
{!! Form::close() !!}

@foreach($data as $item)
<div>
    <div>{{{ $item->id }}}</div>
    <div>{{{ $item->title }}}</div>
    <div>{{{ $item->category }}}</div>
    <div>{{{ $item->production }}}</div>
    <div>{{{ $item->actor }}}</div>
</div>
<hr>
@endforeach

app\Http\Controllers\SearchController.php

<?php

namespace App\Http\Controllers;

use App\Autumn2016;
use Request;

class SearchController extends Controller
{
    public function getIndex()
    {
        // 検索するテキスト取得
        $search = Request::get('s');
        $query = Autumn2016::query();
        // 検索するテキストが入力されている場合のみ
        if(!empty($search)) {
            $query->where('title', 'like', '%'.$search.'%');
        }
        $data = $query->get();
        return view('search.index', compact('data', 'search'));
    }
}

検索前は全件の一覧が表示されます。

try-to-implement-the-search-form-in-the-laravel02

「あ」で検索すると、以下のように絞られた状態で表示されました。

try-to-implement-the-search-form-in-the-laravel03

 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年4月
 123456
78910111213
14151617181920
21222324252627
282930