2016-10-04 24 views
0

私は自分のappRoleで人をリストしようとしています。ここでは、コントローラがあります:2ページ目からLaravel paginatorで渡されたデータが失われました

public function indexByAppRole(Request $request, $appRoleId) 
{ 
    $h1 = AppRole::where('id', $appRoleId)->first()->name; 

    return view('admin.people.index', [ 
     'people' => $this->people->byAppRole($appRoleId), 
     'appRoles' => $this->appRoles->forAll(), 
     'h1'  => 'Role: '. $h1, 
    ]); 
} 

ページネータは、リポジトリで使用されます。

public function byAppRole($appRoleId) 
{ 
    return Person::where('person_app_role.app_role_id', $appRoleId) 
    ->join('person_app_role', 'person_app_role.person_id', '=', 'people.id') 
    ->select('people.*') // fix ID confusion but why? 
    ->paginate(20); 
} 

メインビューが返された人々を示しています。

<ul class="list-group nav nav-pills nav-stacked"> 
    @foreach ($appRoles as $appRole) 
     <li> 
      <a href="{{ route('admin.people.appRole', ['appRoleId' => $appRole->id]) }}">{{ str_plural($appRole->name) }}</a> 
      </li> 
     @endforeach 
</ul> 

ナビゲーションリストは、検索結果やリストの1ページに動作しますが、リストはページ2ページ以降に表示されない:サイドバーでは、私はサイドナビゲーションとして、次のリストを持っています。私は何を間違えたのですか?

+0

。ここに例があります[http://tutsnare.com/how-to-create-pagination-in-laravel/] Laravelのドキュメントもご覧ください。 [https://laravel.com/docs/5.3/pagination] – Manish

+0

@ManishリポジトリでPaginateを使用しました。私はこれを反映するように本文を改訂しました。 –

+0

2ページへのリンクはどのように見えますか?いくつかのgetパラメータが欠けている可能性があります。 getパラメータを使用してページ1を取得する場合は、ページ2への正しいリンクを得るために 'paginate(20) - > appends( 'あなたのget paramters)'を使用しなければならないかもしれません – rypskar

答えて

0

私はこの問題を解決しました。 AppRoleについては、私もページネーターを使用していたので、paginate()の代わりにall()を使用して修正し、すべてのappRolesを取得しました。

// Before........... 
public function forAll() 
{ 
    return AppRole::paginate(20); 
} 

そして:あなたは `Paginate`を使用していけないのはなぜ

// After............ 
public function forAll() 
{ 
    return AppRole::all(); 
} 
関連する問題