前提・実現したいこと
フォームで入力した値が含まれていたら該当する単語だけ検索結果に表示したいのですが、Controllerはどの様なコードを記述すれば良いでしょうか?
index.blade.php
<form action="/search2" method="post"> @csrf ICO.Search:<input type="text" name="word" size="40"> <input type="submit" value="検索"> </form>
PostController
public function search2(Request $request){ $posts = Post::latest()->get(); $test = $request->word; $word= Post::where('title', 'like', '%$test%')->get(); return view('posts.search2')->with([ 'posts' => $posts, 'word' => $word ]); }
web.php
Route::post('/search2', 'PostsController@search2');
###search2.php(index.blade.phpからの表示先)
<p> 送られてきた変数は{{$word}} </p>
試したこと
PostControllerの"%$test%"を部分をダブルクォーテーションにしてみた
index.blade.phpの検索フォームで「a」と入力したらtitleに該当するaを含んだレコードが表示される ※この場合AUGがタイトル [{"id":7,"title":"AUG","body":"fff","created_at":"2019-12-22 22:46:29","updated_at":"2019-12-22 22:46:29"}]
###表示のさせ方
画像の1の後の部分がDBのtitleです。
titleの部分が「a」と含まれる物だけを画像の様に表示させたいです。
この場合はAUGだけです。
画像の上部に配列がありますが、これは「t」と検索したらtitleにtが含まれるtitle2,title3が表示されています。
しかし、titleカラムだけではなくtが含まれるレコードがまで表示されています。
これをtitleだけ抽出したいです。
補足情報(FW/ツールのバージョンなど)
OS:mac
phpバージョン7.1
laravelを使用(バージョン5.8)
index.blade.phpのwordはPostControllerに渡っています。
Laravelはバージョン提示されないと答えようがないです。
PHPの場合、OSのMacは回答にはほぼ意味のない情報です。
PHPのバージョンのほうが有用です。
また、日本語訳ドキュメントにある内容では何が足りませんか?
https://readouble.com/laravel/6.x/ja/queries.html
現在のコードにおける問題点も具体的に記載してください。
失礼しました。バージョンが5.8です。
コードの問題点としましては、
PostControllerの
$test = $request->word;
$word= Post::where('title', 'like', '%$test%')->get();
ではindex.blade.phpから送られた値が含まれている検索結果が表示されません。
回答2件
あなたの回答
tips
プレビュー