Как реализовать пагинацию в Laravel с помощью auth ()? (Раскрыты) - PullRequest
0 голосов
/ 07 октября 2019

Я хочу ограничить свой список кандидатов, используя нумерацию страниц, но я не могу найти способ работать с auth (). Есть ли способ, чтобы это сработало?

Использование $ users = User :: paginate (5);работает, но я хочу использовать auth () по соображениям безопасности

уже пробовал

'applicants' => auth()->user()->applicants->paginate(20)
'applicants' => auth()->user()->paginate(20)->applicants

User.php

// Model
public function applicants()
    {
       return $this->hasMany(Scholar::class,'owner_id');
    }

ApplicantController.php

public function index()
    {

        // show all applicants
        return view('applicants/index', [
            'applicants' => auth()->user()->applicants //reutrn as collection if i dd()
        ]);
    }

foo.blade.php

{{ $applicants->links() }}
{{ $applicants->onEachSide(5)->links() }}

routs / web.php

Route::resource('applicants', 'ApplicantController');

1 Ответ

2 голосов
/ 07 октября 2019

Разбивка на страницы работает в Query Builder или Eloquent. Вы пытаетесь разбить коллекцию на страницы.
https://laravel.com/docs/6.x/pagination#basic-usage

Без скобок эта строка возвращает коллекцию.
На данный момент запрос отправлен и база данныхвернул результаты.

auth()->user()->applicants

В скобках эта строка возвращает экземпляр построителя запросов.
На данный момент запрос не был отправлен в базу данных.

auth()->user()->applicants()

Попробуйте обновить код, чтобы учесть это небольшое, но важное отличие.

'applicants' => auth()->user()->applicants()->paginate(20)

// or some may prefer to explicitly wrap the user model
'applicants' => (auth()->user())->applicants()->paginate(20)
...