Переданные данные теряются в пагинаторе Laravel, начиная со страницы 2

Я пытаюсь перечислить людей по их appRole. Вот контроллер:

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 и последующих страницах. Что я сделал не так?


person hktang    schedule 04.10.2016    source источник
comment
Почему вы не используете Paginate. Вот пример [tutsnare.com/how-to-create-pagination -in-laravel/] См. также документацию Laravel. [laravel.com/docs/5.3/pagination]   -  person Manish    schedule 04.10.2016
comment
@Manish Я использовал Paginate в репозитории. Я изменил текст, чтобы отразить это.   -  person hktang    schedule 04.10.2016
comment
Как выглядит ссылка на страницу 2? Возможно, в нем отсутствует какой-либо параметр получения. Если вы используете параметры get для получения страницы 1, возможно, вам придется использовать paginate(20)->appends('your get paramters), чтобы получить правильную ссылку на страницу 2.   -  person rypskar    schedule 04.10.2016


Ответы (1)


Я решил проблему. Для AppRole я также использовал разбиение на страницы, поэтому это было исправлено с помощью all() вместо paginate() для получения всех appRoles.

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

А также:

// After............
public function forAll()
{
    return AppRole::all();
}
person hktang    schedule 05.10.2016