2017-05-08 23 views
-1

私は仕事であり、ページネーションでデータを表示する検索ボックスを持っていますが、単語sampleの例を検索すると、結果の最初のページにそのタイトルの3つの投稿があります。 :laravelの検索結果の問題5.4

https://ibb.co/hGGxwQ

しかし、私は第2ページのすべての変更に行きます!

https://ibb.co/eZJMO5

これは、これは私のsearch.Blade

@extends('layout.app') 

@section('title') 
Search results 
@endsection 

@section('content') 
<div class="col-md-9 technology-left"> 
      <div class="tc-ch wow fadeInDown" data-wow-duration=".8s" data-wow-delay=".2s"> 

        <h2> Here is <b> {{ $resultcount }} </b> result for your query.</h2> 
        <hr/> 

       <!-- panel group --> 
       <div class="row form-group"> 
       @foreach($posts as $post) 
        <div class="col-xs-12 col-md-6"> 
         <div class="panel panel-default"> 
          <div class="panel-image hide-panel-body"> 
           <img src="{{ url('/storage') }}/{{ $post->image }}" class="img-responsive panel-image-preview" alt="{{ $post->title }}" /> 
          </div> 
          <div class="panel-body"> 
           <h4>{{ $post->title }}</h4> 
           <p>{{ substr(strip_tags($post->body), 0, 50) }}{{ strlen(strip_tags($post->body)) > 50 ? "..." : "" }}</p> 
          </div> 
          <div class="panel-footer text-center"> 

           <a href="{{ url('blog/'.$post->slug) }}"><span class="glyphicon glyphicon-share-alt"></span></a> 
          </div> 
         </div> 
        </div> 
        @endforeach 
       </div> 
       <!-- panel group --> 



       <div class="row text-center"> 
        <div class="col-md-12"> 
         {!! $posts->links() !!} 
        </div> 
       </div> 
      </div> 
</div> 
@endsection 

マイroute

Route::any('/search', ['uses' => '[email protected]', 'as' => 'search.index']); 
である私の searchcontroller

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Post; 
use Illuminate\Support\Facades\Input; 
use Carbon\Carbon; 

class SearchController extends Controller 
{ 
    public function index() { 
     $countTodayOrders = Post::whereRaw('Date(created_at) = CURDATE()')->count(); 
     $yesterday_posts = Post::whereRaw('Date(created_at) = DATE_ADD(CURDATE(), INTERVAL -1 DAY)')->count(); 
     $weekly_posts = Post::whereBetween('updated_at', [Carbon::today()->startOfWeek(), Carbon::today()->endOfWeek()])->count(); 
     $monthy_posts = Post::whereRaw('MONTH(created_at) = ?', Carbon::today()->month)->count(); 



     $q = Input::get('q'); 

     $posts = Post::where('title','LIKE','%'.$q.'%')->orWhere('body','LIKE','%'.$q.'%')->paginate('2'); 
     $resultcount = Post::where('title','LIKE','%'.$q.'%')->orWhere('slug','LIKE','%'.$q.'%')->count(); 
      return view('theme.search', compact('posts', 'resultcount', 'countTodayOrders', 'yesterday_posts', 'weekly_posts', 'monthy_posts', 'q')); 
    } 
} 

です

検索ボックス

<!-- search box --> 
          <form action="/search" method="post" role="search"> 
           {{ csrf_field() }} 
           <div class="input-group"> 
            <input type="text" class="form-control" name="q" placeholder="Search..."> <span class="input-group-btn"> 
             <button type="submit" class="btn btn-default"> 
              <span class="glyphicon glyphicon-search"></span> 
             </button> 
            </span> 
           </div> 
          </form> 
          <!-- search box --> 

なぜですか?

+0

がある場合、文がチェックする場合は、追加する必要があり、データベースのスクリーンショットを投稿してください – Demonyowh

+0

なぜ..........?! –

答えて

0

問題はおそらく、qパラメータがページリンクに渡されないことが原因です。

ただ、このようなあなたのコントローラでは、それを追加します。あなたのブレードで

$q = Input::get('q'); 
$posts = null; 
if($q) { 
    $posts = Post::where('title','LIKE','%'.$q.'%') 
     ->orWhere('body','LIKE','%'.$q.'%') 
     ->paginate(2) 
     ->appends('q', $q); 
} 

を投稿

@if($posts and $posts->count()) 
    // show posts 
@else 
    // show a nothing found message 
@endif 
+0

はこのエラーを返します。未定義の変数:投稿 –

+0

@RobertNicjooどこに入れましたか? '$ posts = Post :: ...'を宣言した直後にその行を追加してください。 – yazfield

+0

ok、動作しているようです!しかし、私はちょうどurlに行きます/検索は、検索されることなくメインページと同じように私の投稿を返します。何故ですか? –

関連する問題