Laravel Eloquent Paginate не существует ошибки

Я пытаюсь установить разбиение на страницы в блейд-представлении Laravel, но при этом сообщении ниже отображается сообщение об ошибке:

BadMethodCallException

Метод Illuminate \ Database \ Eloquent \ Collection :: paginate не существует.

контроллер

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]);
}

Посмотреть лезвие (Admin.article.category-просмотр)

<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>

0

Решение

Вы должны удалить all():

 $category = Category::paginate(10);

Когда вы используете all() вы получаете все строки из таблицы и получаете коллекцию

Вы можете только призвать "paginate" на Queryне на Collection,

0

Другие решения

Использование метода paginate в построителе запросов или только в запросе Eloquent, а не в коллекции, например:

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]);
}
4

По вопросам рекламы [email protected]