前提・実現したいこと
現在laravelを使って開発し、検索機能を実装しているのですが、機能せず、ページがそのまま帰ってきてしまいます。
該当のソースコード
PostsControllerphp
1<?php 2 3namespace App\Http\Controllers; 4 5use App\Post; 6use Auth; 7use Validator; 8use Illuminate\Http\Request; 9 10class PostsController extends Controller 11{ 12 //コンストラクタ (このクラスが呼ばれると最初にこの処理をする) 13 public function __construct() 14 { 15 // ログインしていなかったらログインページに遷移する(この処理を消すとログインしなくてもページを表示する) 16 $this->middleware('auth'); 17 } 18 19 public function index() 20 { 21 $posts = Post::limit(10) 22 ->orderBy('created_at', 'desc') 23 ->get(); 24 25 // テンプレート「post/index.blade.php」を表示します。 26 return view('post/index', ['posts' => $posts]); 27 } 28 29 public function new() 30 { 31 // テンプレート「post/new.blade.php」を表示 32 return view('post/new'); 33 34 } 35 36 public function store(Request $request) 37 { 38 //バリデーション(入力値チェック) 39 $validator = Validator::make($request->all() , ['caption' => 'required|max:255', 'place' => 'required|max:255','photo' => 'required']); 40 41 //バリデーションの結果がエラーの場合 42 if ($validator->fails()) 43 { 44 return redirect()->back()->withErrors($validator->errors())->withInput(); 45 } 46 47 // Postモデル作成 48 $post = new Post; 49 $post->caption = $request->caption; 50 $post->place = $request->place; 51 $post->user_id = Auth::user()->id; 52 53 $post->save(); 54 55 $request->photo->storeAs('public/post_images', $post->id . '.jpg'); 56 57 // 「/」 ルートにリダイレクト 58 return redirect('/'); 59 } 60 61 public function destroy($post_id) 62 { 63 $post = Post::find($post_id); 64 $post->delete(); 65 return redirect('/'); 66 } 67 68 public function research (Request $request) 69 { 70 // リクエストパラメタにkeywordが入っていたら検索機能を動かす 71 if($request->has('keyword')) { 72 // SQLのlike句でitemsテーブルを検索する 73 $posts = Post::where('caption', 'place', '%'.$request->get('keyword').'%')->limit(10); 74 } 75 else{ 76 $posts = Post::limit(10); 77 } 78 return view('post/index', ['posts' => $posts]); 79 } 80} 81
navberbladephp
1@section('navbar') 2 <nav class="navbar navbar-expand-lg navbar-light"> 3 <div class="container"> 4 <a class="navbar__brand navbar__mainLogo" href="/"></a> 5 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> 6 <span class="navbar-toggler-icon"></span> 7 </button> 8 9 <!--検索画面を追加,デバイス用にレイアウト修正--> 10 <form method="GET" action="/" class="ml-5"> 11 <input type="text" name="keyword"> 12 <input type="submit" value="検索"> 13 </form> 14 15 <div class="collapse navbar-collapse" id="navbarSupportedContent"> 16 <ul class="navbar-nav ml-md-auto align-items-center"> 17 <li> 18 <a class="btn btn-primary" href="/posts/new">投稿</a> 19 </li> 20 <li> 21 <a class="nav-link commonNavIcon profile-icon" href="/users/{{ Auth::user()->id }}"></a> 22 </li> 23 </ul> 24 </div> 25 </div> 26 </nav> 27@endsection 28 29
試したこと
検索フォームからは、キーワードが送信されていたので、PostsControllerphpのresearchメソッドに問題があると考えています。
・キーワードを変数にまとめる。
・データの取得方法を変えたりしたのですが、機能しませんでした。
初歩的な問題ですが回答いただければ幸いです。
##追記
viewで指定した、ページは以下のコードになっています
もし、心当たりがありましたら、ご指摘いただければ幸いです。
@extends('layouts.app') @include('navbar') @include('footer') @section('content') @foreach ($posts as $post) <div class="col-md-8 col-md-2 mx-auto"> <div class="card-wrap"> <div class="card"> <div class="card-header align-items-center d-flex"> <a class="no-text-decoration" href="/users/{{ $post->user->id }}"> @if ($post->user->profile_photo) <img class="post-profile-icon rounded" src="{{ asset('storage/user_images/' . $post->user->profile_photo) }}"/> @else <img class="post-profile-icon rounded" src="{{ asset('/images/blank_profile.png') }}"/> @endif </a> <a class="black-color no-text-decoration" title="{{ $post->user->name }}" href="/users/{{ $post->user->id }}"> <strong>{{ $post->user->name }}</strong> </a> @if ($post->user->id == Auth::user()->id) <a class="ml-auto mx-0 my-auto" rel="nofollow" href="/postsdelete/{{ $post->id }}"> <div class="delete-post-icon"> </div> </a> @endif <!--ヘッダーに対して、いいねのアイコンと、保存ボタンを追加する--> </div> <div class="card-body d-flex"> <div class="card-body-left"> <a href="/users/{{ $post->user->id }}"> <!--遷移先を詳細画面にする--> <img src="/storage/post_images/{{ $post->id }}.jpg" class="card-img-top" /> </a> </div> <div class="card-body-right ml-5 mt-2"> <div class="card-text d-block"> <p><strong>施設名・住所</strong></p> <span>{{ $post->place }}</span> </div> <div class="card-title d-block mt-5"> <p><strong>説明</strong></p> <span>{{ $post->caption }}</span> </div> </div> </div> </div> </div> </div> @endforeach @endsection
回答1件
あなたの回答
tips
プレビュー