2016-10-21 7 views
0

イムを照会し、新しい変数のpaginate後:間違ったページネータが2を渡すとビューでレンダリングすると、2つのクエリをマージしようと

$a = Message::where('conversation_id',$id)->where('user_id',$user->id)->where('s_1',1) 
     ->orderBy('created_at','DESC')->get(); 
    $b = Message::where('conversation_id',$id)->where('user_id',$conversation->recipients()->last()->user->id)->where('s_2',1) 
     ->orderBy('created_at','DESC')->get(); 
    $result = $a->merge($b); 

    $messages = new Paginator($result, $result->count(), 1, 1); 

仕事ビューのforeachのが、レンダリングが間違っているとページ付けいけない、表示すべて1ページのみでの結果:

<table class="table table-hover"> 
      @foreach($messages as $i => $message) 
      <tr> 
       <td> 
        <img src="{{$avatar[$message->user->username]}}" class="aoi pull-left" /> 
        <a href="{{route('profile',[$message->user->username])}}">{{ $message->user->name }}</a> 
        {{ $message->body }} 
       </td> 
      </tr> 
      @endforeach 
     </table> 
     {!! str_replace('/?', '?', $messages->render()) !!} 

メッセージが正しいのparamsを返しますが、ビュー上で作業をいけないVAR:

{"total":2,"per_page":2,"current_page":1,"last_page":1,"next_page_url":null,"prev_page_url":null,"from":1,"to":2,"data": 

のurl:/ message/1?page = 2は2行だけでなく、/ message/1にも表示され、ページ区切りは表示されません。

答えて

0

あなたがアイテムの総数を渡しているので、あなたのPaginatorは実際にはLengthAwarePaginatorだとしか思えません(これはLaravelの古いバージョンかもしれません)。

あなたはページネータクラスを構築する方法:

$messages = new LengthAwarePaginator($result, $result->count(), 1, 1); 

あなたはページネータのクラス定義を見てみると:

/** 
* Create a new paginator instance. 
* 
* @param mixed $items 
* @param int $total 
* @param int $perPage 
* @param int|null $currentPage 
* @param array $options (path, query, fragment, pageName) 
* @return void 
*/ 
public function __construct($items, $total, $perPage, $currentPage = null, array $options = []) 

四番目のパラメータは、あなたが1として渡され、現在のページ、です、最初のページに常に改ページされます。 nullを渡すだけで(または4番目のパラメータを渡すことを避けてください)、現在のリクエストパラメータpageをチェックすることで、現在のページを自動的に解決しようとします。要約すると

、このように変更します。

$messages = new LengthAwarePaginator($result, $result->count(), 1); 
関連する問題