I'm trying to set pagination in a Laravel blade/view but it's showing an error with this message below:
BadMethodCallException
Method Illuminate\\Database\\Eloquent\\Collection::paginate does not exist.
Controller
public function view()
{
$user = Auth::user();
$basic_info = User::find($user->id)->basic_info;
$category = Category::all()->paginate(10);
return view('admin.article.category-view')->with(['user' => $user, 'basic_info' => $basic_info, 'category' => $category]);
}
View Blade (admin.article.category-view)
<div class="panel-body">
<table class="table table-hover">
<thead>
<tr>
<th>Category Name</th>
</tr>
</thead>
<tbody>
@foreach($category as $cat)
<tr>
<td>{{ $cat->name }}</td>
</tr>
@endforeach
</tbody>
</table>
{{ $category->links() }}
</div>
Using paginate method on the query builder or an Eloquent query only, not on collection, like so:
public function view()
{
$user = Auth::user();
$basic_info = User::find($user->id)->basic_info;
$category = Category::paginate(10);
return view('admin.article.category-view')->with(['user' => $user, 'basic_info' => $basic_info, 'category' => $category]);
}
You need to remove all()
:
$category = Category::paginate(10);
When you're using all()
you get all the rows from the table and get a collection
You can only invoke "paginate"
on a Query
, not on a Collection
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.