2015-07-31 4 views
1

Папаратор laravel действительно работает, но не очень хорош в моем случае.Laravel paginator не работает должным образом

Итак, у меня есть форум с комментариями, а страница будет отображаться, когда есть более 10 комментариев на этой странице.

Таким образом, у меня есть тема, которая содержит более 10 комментариев, а затем она отлично работает на этой странице, но когда я перехожу на другую страницу, он делает разбиение на страницы самых комментариев. Это не то, чего я хочу.

Вот некоторые экраны и код:

pic1

Здесь есть более 10 комментариев, так что это хорошо, что он отображает Paginator. Самое странное в том, что он показывает только комментарии и не 10.

Вот еще одна тема только с 8 комментариями, поэтому нумерация страниц не должен ничего показывать:

scr 2

Но как вы можете видеть, это не показать Paginator ....

Мой код выглядит следующим образом:

Con Троллингист:

public function thread($title) 
    { 
     $thread = Thread::where('title', '=', str_replace('Thread-', '',str_replace('-', ' ', $title)))->first(); 

     $usercolor = DB::table('threads') 
           ->join('user', 'threads.uid', '=', 'user.id') 
           ->join('role', 'user.role_id', '=', 'role.id') 
           ->where('threads.uid', '=', $thread->uid) 
           ->first(); 

     $usertitle = DB::table('threads') 
           ->join('user', 'threads.uid', '=', 'user.id') 
           ->where('threads.uid', '=', $thread->uid) 
           ->first(); 

     $comments = Comment::orderBy('posted_at', 'asc') 
           ->where('deleted_at', '=', '0000-00-00 00:00:00') 
           ->with('user.role') 
           ->paginate(10); 

     if (!$thread) { 
      return die('bestaat niet!'); 
     }else{ 

     return View::make('thread')->with('threads', $thread) 
            ->with('comments', $comments) 
            ->with('usercolor', $usercolor) 
            ->with('usertitle', $usertitle); 

     } 

    } 

Вид:

@include('globs.header') 

<div class="col-sm-offset-1 col-sm-10"> 
<div class="clearfix">&nbsp;</div> 


@if(Request::get('page', 1) == 1) 
<div class="panel panel-default" id="a9"> 
    <div class="panel-heading">  
    <div class="panel-title">{{ $threads->title }} 

    </div> 
    </div> 

    <div class="panel-body thread-row"> 

    <div class="row thread-row"> 

     <div class="col-md-2 col-sm-3 text-center userblock"> 
     <div class="clerafix">&nbsp;</div> 
     <img class="img-thumbnail avatar" src="./public/img/avatar.jpg" alt="Avatar" height="55px;" width="55px"> 
     <div class="push_bottom_5" style="color:{{ $usercolor->colour }};"><strong>{{ $threads->username }}</strong></div> 
     <div class="push_bottom_5"><small>{{ $usertitle->usertitle }}</small></div> 
     <div class="label label-default" style="background-color:{{ $usercolor->colour }};">{{ $usercolor->name }}</div> 

     <div class="push_bottom_5"> 
      @if($usercolor->id == '1') 
      <i class="fa fa-star"></i> 
      @elseif($usercolor->id == '2') 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      @elseif($usercolor->id == '3') 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      @elseif($usercolor->id == '4') 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      @elseif($usercolor->id == '5') 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      @elseif($usercolor->id >= '6') 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      @endif 
     </div> 

     <div class="text-muted text-left"><small>Total Posts:&nbsp; 66</small></div>  
     <div class="text-muted text-left"><small>Joined&nbsp; 05-11-2014</small></div> 



     <div class="clerafix">&nbsp;</div> 
     </div> 


     <div class="col-md-5 col-sm-6 col-xs-8"> 
     <div class="clerafix">&nbsp;</div> 
     <div class="text-muted"><span><i class="fa fa-calendar"></i> </span><small> 
     <span>Posted:</span> {{ date("d-m-Y", strtotime($threads->date_posted)) }}</small></div> 
     </div>  

     <div class="col-md-10 col-sm-9 col-xs-12"> 
     <div class="clerafix">&nbsp;</div> 

     <div class="content_body"><p>{{ Helper::Filter(BBCode::parse($threads->message)) }}</p> 

</div> 
     <div class="clerafix">&nbsp;</div> 
     </div> 

    </div> 

    </div> 

    <div class="panel-footer clearfix"> 
    <div class="pull-right"> 
     <!-- acties --> 
     <button class="btn btn-primary btn-sm"><i class="fa fa-edit"></i> Aanpassen</button> 
     <button class="btn btn-primary btn-sm"><i class="fa fa-quote-left"></i> Quote</button> 
     <button class="btn btn-danger btn-sm"><i class="fa fa-trash"></i> Verwijder</button> 
     <button class="btn btn-warning btn-sm"><i class="fa fa-exclamation"></i> Rapporteer</button> 
    </div> 
    </div> 
</div> 

<!-- end of the topic --> 
</div> 
@endif 


<!-- begin of comments --> 
@foreach($comments as $comment) 
@if($comment->tid == $threads->tid) 

<div class="col-sm-offset-1 col-sm-10"> 
<div class="clearfix">&nbsp;</div> 


<div class="panel panel-default" id="a9"> 

    <div class="panel-body thread-row"> 

    <div class="row thread-row"> 

     <div class="col-md-2 col-sm-3 text-center userblock"> 
     <div class="clerafix">&nbsp;</div> 
     <img class="img-thumbnail avatar" src="./public/img/avatar.jpg" alt="Avatar" height="55px;" width="55px"> 
     <div class="push_bottom_5" style="color:{{ $comment->user->role->colour }};"><strong>{{ $comment->username }}</strong></div> 
     <div class="push_bottom_5"><small>{{ $comment->user->usertitle }}</small></div> 
     <div class="label label-default" style="background-color:{{ $comment->user->role->colour }};">{{ $comment->user->role->name }}</div> 

     <div class="push_bottom_5"> 
      @if($comment->user->role->id == '1') 
      <i class="fa fa-star"></i> 
      @elseif($comment->user->role->id == '2') 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      @elseif($comment->user->role->id == '3') 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      @elseif($comment->user->role->id == '4') 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      @elseif($comment->user->role->id == '5') 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      @elseif($comment->user->role->id >= '6') 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      <i class="fa fa-star"></i> 
      @endif 
     </div> 

     <div class="text-muted text-left"><small>Total Posts:&nbsp; 66</small></div>  
     <div class="text-muted text-left"><small>Joined&nbsp; 05-11-2014</small></div> 



     <div class="clerafix">&nbsp;</div> 
     </div> 


     <div class="col-md-5 col-sm-6 col-xs-8"> 
     <div class="clerafix">&nbsp;</div> 
     <div class="text-muted"><span class="hidden-md "><i class="fa fa-calendar"></i> 
     </span><small><span>Posted:</span> {{ date("d-m-Y", strtotime($comment->posted_at)) }}</small></div> 
     </div>  

     <div class="col-md-10 col-sm-9 col-xs-12"> 
     <div class="clerafix">&nbsp;</div> 

     <div class="content_body"><p>{{ Helper::Filter(BBCode::parse($comment->comment)) }}</p> 

</div> 
     <div class="clerafix">&nbsp;</div> 
     </div> 
    </div> 

    </div> 

    <div class="panel-footer clearfix"> 
    <div class="pull-right"> 
    <!-- acties --> 
     <button class="btn btn-primary btn-sm"><i class="fa fa-edit"></i> Aanpassen</button> 
     <button class="btn btn-primary btn-sm"><i class="fa fa-quote-left"></i> Quote</button> 
     <button class="btn btn-danger btn-sm"><i class="fa fa-trash"></i> Verwijder</button> 
     <button class="btn btn-warning btn-sm"><i class="fa fa-exclamation"></i> Rapporteer</button> 
    </div> 
    </div> 
</div> 

</div> 
@endif 
@endforeach 

<!-- end of comments --> 


@if(Auth::check()) 
<div class="col-sm-offset-1 col-sm-10"> 
<div class="clearfix">&nbsp;</div> 
    <div class="panel panel-default" id="a9"> 
      <div class="panel-heading"><h4>Snelle reactie plaatsen</h4></div> 
      <div class="panel-body"> 

      {{ Form::open(array('url' => 'SubmitComment')) }} 
      <input type="hidden" value="{{ $threads->tid }}" name="tid"> 
      {{ Honeypot::generate('spamprt', 'time') }} 
       <textarea name="comment" class="form-control" col="250" rows="5" placeholder="Typ uw bericht..."></textarea> 

       <div class="clearfix">&nbsp;</div> 
      <button class="btn btn-success pull-left" type="submit" name="action"> 
      Reageer 
      </button> 
      {{ Form::close() }} 

      </div> 
    </div> 
</div> 
@endif 


<div class="col-md-4 col-md-offset-5">{{ $comments->links() }}</div> 



</div> 
</div> 

@include('globs.footer') 

Я надеюсь, что вы, ребята поймут мою проблему и быть в состоянии найти идеальное решение со мной.

ответ

1

Похоже, вы всегда получаете все комментарии. Я также могу видеть это в вашем шаблоне, где вы завершаете свой код в @if($comment->tid == $threads->tid) в своем foreach.

Это означает, что позже в вашем шаблоне, где вы извлекаете ссылки на страницы, он будет извлекать ссылки для всех комментариев, но не все комментарии отображаются на странице, так как вы их фильтруете вручную в цикле.

Запрос комментарии как

$comments = Comment::orderBy('posted_at', 'asc') 
    ->where('deleted_at', '=', '0000-00-00 00:00:00') 
    ->where('tid', $threads->tid) // it's about this line! 
    ->with('user.role') 
    ->paginate(10); 

Примечание: Выше должны обеспечить решение вашей проблемы, но в качестве дополнительных, вы также можете посмотреть в relationships. В качестве дополнения этот ответ на SO "Laravel 4.1: How to paginate eloquent eager relationship?" (Так как вы отметили свое сообщение с Laravel-4), есть несколько хороших аргументов в том, как эффективно это делать.

+1

Работает как очарование, спасибо! Я пока не думал: $ – Robin

Смежные вопросы