Laravel Method paginate does not exist

前端 未结 5 1645
情深已故
情深已故 2021-02-01 06:55

I am trying to paginate Model result, but I am getting \"Method paginate does not exist.\". Here is my code:

$user_dispatches = Dispatch::all()->where(\'user_         


        
相关标签:
5条回答
  • 2021-02-01 07:06
    Dispatch::where('user_id', auth()->user()->id)->paginate(10);
    
    0 讨论(0)
  • 2021-02-01 07:11

    You need to remove all():

    Dispatch::where('user_id', Auth::id())->paginate(10);
    

    When you're using all() you get all the rows from the table and get a collection. Then you're using collection method where() (and not Query Builder method where()) and then you're trying to use paginate() method on the collection and it doesn't exist.

    0 讨论(0)
  • 2021-02-01 07:21

    for use all recorde and pagination , you need use below code :

    $user_dispatches = Disspath::paginate(8);
    
    0 讨论(0)
  • 2021-02-01 07:24

    Extending a bit Alexey's perfect answer :

    Dispatch::all() => Returns a Collection

    Dispatch::all()->where() => Returns a Collection

    Dispatch::where() => Returns a Query

    Dispatch::where()->get() => Returns a Collection

    Dispatch::where()->get()->where() => Returns a Collection

    You can only invoke "paginate" on a Query, not on a Collection.

    And yes, it is totally confusing to have a where function for both Queries and Collections, working as close as they do, but it is what it is.

    0 讨论(0)
  • 2021-02-01 07:27

    You need remove method all() :

    $user_dispatches = Dispatch::where('user_id', Auth::id())->paginate(10);
    

    Because all() return a Collection while paginate() used a Builder

    0 讨论(0)
提交回复
热议问题