###前提・実現したいこと
Laravelで検索機能を実装したいと考えています。データベースと連携し、データベースに入っているものは表示、IDだけでの検索はできました。次のステップとして、商品名や著者などの名前で何かしらヒットすれば検索結果が表示されるキーワード検索を実現したいです。ご教示お願いいたします。
###発生している問題・エラーメッセージ
php
1Method getData does not exist.(View: C:\xampp\htdocs\sample1\resources\views\layouts\search.blade.php)
###該当のソースコード
1.モデルクラス Books.php
2.コントローラ BookController.php
3.ビュー search.blade.php
1.Books.php
php
1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6 7class Books extends Model 8{ 9 public $timestamps = false; 10 11 12 public function authors() 13 { 14 return $this->hasMany(Authors::class); 15 } 16 17 public function publisheres() 18 { 19 return $this->hasMany(Publisheres::class); 20 } 21 22 public function genres() 23 { 24 return $this->hasMany(Genres::class); 25 } 26 27 28 public function getData() 29 { 30 return $this->書籍名; 31 } 32} 33
2.BookController.php(indexメソッドは使用していません。)
php
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use App\Books; 7 8class BookController extends Controller 9{ 10 public function index(Request $request) 11 { 12 $items = Books::all(); 13 return view('books.index', ['items' => $items]); 14 } 15 16 public function find(Request $request) 17 { 18 return view('books.index', ['input' => '']); 19 } 20 21 public function search(Request $request) 22 { 23 $name = $request->input; 24 25 $item = Books::where('書籍名', 'like', '%' .$name . '%') 26 ->orwhere('著者名', 'like', '%' .$name . '%')->get(); 27 $param = ['input' => $request->input, 'item' => $item]; 28 return view('books.index', $param); 29 } 30 31} 32
3.search.blade.php(該当箇所のみ)
php
1<div id="search-container"> 2 <div id="search"> 3 <form method="post" action="/search"> 4 {{ csrf_field() }} 5 <span class="searchtitle">検索</span> 6 <span class="search-category"><select onchange="changeDetailSearchLink()" name="cat_p" id="search_select_category"><option value="">すべて</option> 7 <option value="00" selected>文芸</option><option value="01">実用</option><option value="03">芸術・アート</option><option value="04">ビジネス</option><option value="05">コンピュータ</option><option value="06">人文</option><option value="07">理工</option></select></span> 8 <input name="input" value="{{$input}}" placeholder="キーワードを入力" type="text"> 9 <input type="submit" name="submit" value="検索"> 10 </form> 11 <span class="detail-search"><a href="/search/detail" id="detail_search_link">詳細検索</a></span> 12 @if (isset($item)) 13 <table> 14 <tr><th>検索結果</th></tr> 15 <tr> 16 <td>{{$item->getData()}}</td> 17 </tr> 18</table> 19@endif 20 21 </div> 22 </div>
###試したこと
いろいろ調べてみたのですが似たような事例の解決方法が見つからず自分で参考書を読み返したりして考えていましたが、結局わかりませんでした。
###補足情報(FW/ツールのバージョンなど)
・Laravel5.5
・xampp
・PHP
・MariaDB
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/28 02:30