You need to append in pagination your filters with something like this: $discussions=$user->discussions('created_at','desc')->paginate(3)->appends($filters); I hope it helps
Mar 23, 2019
5
Level 1
trouble with pagination with collection
this is my route:
Route::get('/home', 'ForumsController@index')->name('home');
this is my index function:
public function index()
{
switch (request('filter')) {
case 'me':
$user=Auth::user();
$discussions=$user->discussions('created_at','desc')->paginate(3);
break;
case 'unsolved':
$result=array();
foreach (Discussion::all() as $discussion)
{
if(!$discussion->hasBestAns())
array_push($result, $discussion);
}
$discussions=collect($result);
$currentPage = LengthAwarePaginator::resolveCurrentPage();
$discussions=new LengthAwarePaginator($discussions,count($discussions),3,['path' => request()->url()]);
break;
case 'solved':
$result=array();
foreach (Discussion::all() as $discussion) {
if($discussion->hasBestAns())
array_push($result, $discussion);
}
$discussions=collect($result);
$discussions=new Paginator($discussions,3);
break;
default:
$discussions=Discussion::orderBy('created_at','desc')->paginate(3);
break;
}
return view('index')
->with('discussions',$discussions);
}
these are my links:
<li class="list-group-item">
<a href="/home">Home</a></li>
<li class="list-group-item">
<a href="{{ route('home',['filter'=>'me']) }}">My Discussions</a></li>
<li class="list-group-item">
<a href="{{ route('home',['filter'=>'unsolved']) }}">Opened Discussions</a></li>
<li class="list-group-item">
<a href="/home?filter=solved">Closed Discussions</a></li>
when there are no filters everything works fine. When if use filter first page works fine but when I click second or another page it produces
but I need
"http://forum.local/home?filter=unsolved&page=2"
how can I do that?
Level 75
See https://laracasts.com/discuss/channels/laravel/how-to-paginate-laravel-collection
It explains a collection pagination there is a link there.
Also
https://laracasts.com/discuss/channels/guides/length-aware-paginator
It's redundant paginating a collection, unless you only have a small amount of results.
Just paginate the query.
Please or to participate in this conversation.