简体   繁体   中英

Laravel Eloquent Paginate Doesn't Exist Error

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM