実現したいこと
Laravelで掲示板の作成をしています。投稿機能や編集削除など一通り備わったのですが、検索機能がうまくできません。
名前、投稿日、本文で成り立っている投稿を一覧で表示させていますが、本文をあいまい検索して、該当する投稿のみ表示させたいです。
前提
検索フォームを作成して、PostsController.phpに処理内容を記載しweb.phpでルーティングしました。特にエラーは表示されませんが、検索しても結果が反映されないです。
テーブル(カラム) posts(id、 post、 user_name、 created_at、 update_at)
該当のソースコード
index.blade.php
1@extends('layouts.app') 2 3 4@section('content') 5<div class='container'> 6 7 8 <div class='container'> 9 10 11{!! Form::open(['url' => 'post/create']) !!} 12 13<h5 class='page-header'>名前</h5> 14<div class="form-group"> 15{!! Form::input('text', 'name', null, ['required', 'class' => 'form-control', 'placeholder' => '名前']) !!} 16</div> 17 18<h5 class='page-header'>本文</h5> 19<div class="form-group"> 20{!! Form::input('text', 'newPost', null, ['required', 'class' => 'form-control', 'placeholder' => '投稿内容']) !!} 21</div> 22<div> 23 @if ($errors->any()) 24 <ul> 25 @foreach ($errors->all() as $error) 26 <li>{{ $error }}</li> 27 @endforeach 28 </ul> 29 @endif 30</div> 31 32<button type="submit" class="btn btn-success pull-right">投稿</button> 33 34{!! Form::close() !!} 35 36</div> 37 38<h2 class='page-header2'>投稿一覧</h2> 39 40 41@foreach ($lists as $list) 42 43 44<hr> 45<div class=user> 46 <span class=name>{{ $list->user_name }}</span> 47 <span class=created>{{ $list->created_at }}</span> 48</div> 49<div class=post>{{ $list->post}}</div> 50<a class="btn btn-primary" href="/post/{{ $list->id }}/update-form">編集</a> 51<a class="btn btn-danger" href="/post/{{ $list->id }}/delete"onclick="return confirm('こちらの投稿を削除してもよろしいでしょうか?')">削除</a> 52 53@endforeach 54 55<!-- 検索 --> 56<div class="col-sm-4" style="padding:20px 0; padding-left:0px;"> 57<form class="form-inline" action="{{url('/')}}"> 58 <div class="form-group"> 59 <input type="text" name="keyword" class="form-control" placeholder="名前を入力してください"> 60 </div> 61 <input type="submit" value="検索" class="btn btn-info"> 62</form> 63</div> 64 65</div> 66@endsection 67 68<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 69
PostsController.php
1 2 3public function index(Request $request) 4{ 5$list = DB::table('posts')->get(); 6return view('posts.index',['lists'=>$list]); 7 8 $keyword = $request->input('keyword'); 9 #もしキーワードがあったら 10 if(!empty($keyword)) 11 { 12 $list->where('post','like','%'.$keyword.'%'); 13 } 14 15} 16
web.php
1 2Route::get('/', [PostsController::class, 'index']); 3
試したこと
PostsControllerの処理内容が違うと思うのですが、クエリをいろいろ試したりしましたがうまくいかないです。
補足情報(FW/ツールのバージョンなど)
Laravelバージョン7

回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2023/06/08 14:38 編集
2023/06/08 15:07