前提・実現したいこと
Laravelで検索機能作りたいです。
ブログ一覧に検索フォームを作り、該当のキーワードがあればそれのみを表示する、ということをしたいです。
発生している問題・エラーメッセージ
検索フォームにキーワードを入力して検索ボタンを押しても、エラーが発生します。
いろいろなやり方を試しましたが、どれもうまくいかないためご教授をお願いします。
<エラーメッセージ> Method Illuminate\Database\Eloquent\Collection::links does not exist. (View: /Applications/MAMP/htdocs/Test/resources/views/blog/list.blade.php)
該当のソースコード
<list.blade.php> @extends('layout') @section('title','ブログ一覧') @section('content') <div class="row"> <div class="col-md-8 col-md-offset-2"> <h2>ブログ記事一覧</h2> <!--↓↓ 検索フォーム ↑↑--> <form class="form-inline" action="{{url('/search')}}" method="GET"> <div class="form-group"> <input type="text" name="keyword" value="@if (isset( $keyword )) $keyword @endif" placeholder="タイトル名を入力"> <input type="submit" value="検索" > </div> </form> <!--↑↑ 検索フォーム ↑↑--> @if (session('err_msg')) <p class="text-danger">{{ session('err_msg') }} </p> @endif <table class="table table-striped"> <tr> <th>記事番号</th> <th>タイトル</th> <th>日付</th> </tr> <tr> @foreach($blogs as $blog) <td>{{ $blog->id }}</td> <td><a href="/blog/{{ $blog->id }}">{{ $blog->title }}</a></td> <td>{{ $blog->updated_at }}</td> </tr> @endforeach </table> {{ $blogs->links() }} <br> </div> </div> @endsection
<web.php> // ブログ一覧を表示 Route::get('/', [BlogController::class, 'showList'])->name ('blogs'); //検索機能 Route::get('/search', [BlogController::class, 'getSearch'])->name ('search');
<BlogController.php> class BlogController extends Controller { /** * ブログ一覧を表示する * * @return view */ public function showList(Request $request) { $blogs = Blog::paginate(10); return view('blog.list', ['blogs' => $blogs]); } //検索機能 public function getSearch(Request $request) { // キーワードを取得 $keyword = $request->input('keyword'); //クエリ作成 $query = Blog::query(); //キーワードが入力されている場合 if(!empty($keyword)){ $query->where('title', 'like', '%'.$keyword.'%') ->orWhere('body','like','%'.$keyword.'%'); } $blogs = $query->get(); return view('blog.list')->with(compact("blogs","keyword")); } }
補足情報(FW/ツールのバージョンなど)
MAMPのバージョンは6.0.1(986)
VScodeバージョン: 1.52.1
laravelのバージョンは8です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/21 15:39 編集
2021/01/21 15:35
2021/01/21 15:41
2021/01/21 15:42