Laravelを使って検索機能を実装していく
画像のような感じでキーワードを打ったら該当するレコードを結果として出すプログラムを書いていく。
Controller
<?php
namespace App\Http\Controllers;
use App\Models\HowtoVideo;
use Illuminate\Http\Request;
class HowtoVideoController extends Controller
{
public function index(Request $request) {
$search = $request->input('search');
// 検索しなかったとき降順で表示する
$query = HowtoVideo::orderBy('created_at', 'desc');
// ユーザーが検索をかけた場合(partもしくはmenuのキーワードであいまい検索をかける)
if (isset($search)) {
$query = HowtoVideo::where('menu', 'LIKE', "%${search}%")
->orwhere('part', 'LIKE', "%${search}%");
}
// 上記結果に加えpaginateをかける
$howtovideos = $query->paginate(30);
return view('howtovideos.index', compact('howtovideos', 'search'));
}
}
- クエリビルダの曖昧検索を使って実装をする。今回の場合、menuもしくはpartでヒットをかけたいため、where句とorWhere句を使用してあげることでどちらかがヒットすることで検索がかかるようにしている。
View
<form>
<input type="search" name="search" placeholder="キーワードを入力" aria-label="検索..." value="{{ $search }}">
<input type="submit" value="検索">
</form>
- 今回は日付検索などではないため、
input type
箇所にはsearch
と記載する -
value="{{ $search }}"
と記載してあげることで検索後に検索窓に入力したキーワードを残すことができる
以上