Quantcast
Channel: laravel5.8タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 87

laravel 検索機能

$
0
0
laravelの検索機能を作成したのでアウトプットしていこうと思います。 画面 商品名:あいまい検索 商品カテゴリー:プルダウン検索 入力保持:検索した値が残る 実装 ▪️View views/product/search.blade.php <form class="search" enctype="multipart/form-data" action="{{route('product.index')}}" accept-charset="UTF-8" method="get"> @csrf <div class="row"> <div class="input-group mt-4 col-md-7 offset-2"> <h2 class="mr-4">商品名</h2> <input type="text" name="product_name" class="form-control" value="{{isset($product_name) ? $product_name : "" }}"> <span class="input-group-btn"> <input type="submit" class="btn btn-primary ml-4" value="検索"> </span> </div> </div> <div class="row"> <div class="input-group mt-4 col-md-7 offset-2"> <h2>商品カテゴリ</h2> <select id="category_id" name="category_id" class="form-control"> @foreach(config('categories') as $id => $category) <option name="category_id" value="{{$id}}" @if ($id === $category_id_int) {{$id}} selected @endif>{{$category}}</option> @endforeach </select> </div> </div> </form> @foreach(config('categories') as $id => $category) セレクトボックスの値はconfig/categories.phpに配列を持ってきています。 入力保持 ・テキストボックス value="{{isset($product_name) ? $product_name : "" }}" ・セレクトボックス value="{{$id}}" @if ($id === $category_id_int) {{$id}} selected @endif> なぜかold関数が使えなかったので今回の方法で入力保持しました。 これが正解かどうかはわかりませんが、参考になればと思います。 イメージとしては 値をコントローラに送って、送った値を再び表示させているイメージです。 routes/web.php <?php return array( '0'=>'未選択', '1'=>'肉類', '2'=>'魚介類', '3'=>'果物類', '4'=>'野菜類', '5'=>'飲み物類', '6'=>'漬物類', '7'=>'菓子類', ); ▪️Controller Controller/ProductsController.php /** * 商品検索 * @return $datas */ public function index(Request $request) { $query = Product::query(); $product_name = $request->product_name; $category_id = $request->category_id; //商品名の値が存在&商品名の値が空ではなかった場合 if ($request->has('product_name') && $product_name !== '') { $query->where('product_name', 'like', '%' . $product_name . '%')->get(); } //カテゴリーの値が存在&カテゴリーの値が0ではなかった場合 if ($request->has('category_id') && $category_id !== '0') { $query->where('category_id', $category_id)->get(); } $datas = $query->paginate(15); //型変換 $category_id_int = intval($category_id); return view('product.search', ['datas' => $datas, 'product_name' => $product_name, 'category_id_int' => $category_id_int]); } ▪️route routes/web.php Route::prefix('products')->group(function () { Route::get('/', 'ProductsController@index')->name('product.index'); });

Viewing all articles
Browse latest Browse all 87

Trending Articles