実現したいこと
- 全投稿内容をあいまい検索をし、適当な投稿を表示する
前提
Laravelでログイン機能付き掲示板を作成しています。
検索フォームに入力されたらその内容のみを表示できるようにしたいです。
postsテーブルから入手したレコード情報は$listに格納しており、listsという名前でビューに渡しています。
発生している問題・エラーメッセージ
エラーは出ていませんが検索機能が機能せず全ての投稿が表示されてしまう
該当のソースコード
PostController.php
1public function index(Request $request) 2 { 3 $keyword = $request->input('keyword'); 4 $list=DB::table('posts')->get(); 5 if(!empty($keyword)) { 6 $list->where('contents', 'LIKE', "%{$keyword}%"); 7 } 8 //$posts = $list->get(); 9 return view('posts.index', ['lists'=>$list]); 10 }
index.blade.php
1@extends('layouts.app') <!--「app.blade.php」の方が親となり、「index.blade.php」の方が子のビューファイルとなる--> 2@section('content') <!--囲っている部分の名前付け--> 3<div class='container'> <!--containerクラス--> 4 <p class="pull-right"><a class="btn btn-success" href="/create-form">投稿する</a></p> <!--投稿するボタン--> 5 <h2 class='page-header'>投稿一覧</h2> <!--タイトル--> 6 <div id="search"> 7 <form action="/index" method="get"> 8 <input type="text" name="keyword" placeholder="キーワードを入力"> 9 <input type="submit" name="submit" value="検索"> 10 </form> 11 </div> 12 <table class='table table-hover'> <!--表--> 13 <tr> <!--表の1行--> 14 <th>名前</th> <!--表の見出し--> 15 <th>投稿内容</th> <!--表の見出し--> 16 <th>投稿日時</th> <!--表の見出し--> 17 <th></th> <!--表の見出し--> 18 <th></th> <!--表の見出し--> 19 </tr> 20 @foreach ($lists as $list) <!--$listsに入っている値を$listに格納し順番に表示--> 21 <tr> <!--containerクラス--> 22 <td>{{ $list->user_name }}</td> <!--$listの中のusernameを表示--> 23 <td>{{ $list->contents }}</td> <!--$listの中のcontentsを表示--> 24 <td>{{ $list->created_at }}</td> <!--$listの中のcreated_atを表示--> 25 <td><a class="btn btn-primary" href="/post/{{ $list->id }}/update-form">更新</a></td> <!--更新ボタン--> 26 <td><a class="btn btn-danger" href="/post/{{ $list->id }}/delete" onclick="return confirm('こちらの投稿を削除してもよろしいでしょうか?')">削除</a></td> <!--削除ボタン--> 27 </tr> 28 @endforeach <!--foreach文を閉じる--> 29 </table> 30</div> 31@endsection
試したこと
compactの使用、return viewの引数に’keyword'を入れる
補足情報(FW/ツールのバージョンなど)
下記のサイトを参考にしましたが、viewファイルへの受け渡しの部分がよくわかりませんでした。
https://qiita.com/hinako_n/items/7729aa9fec522c517f2a

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。