方法paginate不存在

Jul*_*oro 3 laravel-5.1

当我做:

    $tournaments =  Tournament::paginate(Config::get('constants.PAGINATION'));
Run Code Online (Sandbox Code Playgroud)

它有效,但我只需要拥有用户的锦标赛.

所以我这样做:

    $tournaments = Auth::user()->tournaments;
    $tournaments->paginate(Config::get('constants.PAGINATION'));
Run Code Online (Sandbox Code Playgroud)

我在用户模型中有一个hasMany Relationship

我得到了这个消息

Method paginate does not exist.
Run Code Online (Sandbox Code Playgroud)

我该如何解决?它似乎并不复杂,但我做不到!

编辑:@smartrahat

第二个查询的结果:Auth :: user() - >锦标赛

Collection {#385 ?
#items: array:1 [?
0 => Tournament {#386 ?
  #table: "tournament"
  +timestamps: true
  #fillable: array:17 [?]
  #dates: array:2 [?]
  #connection: null
  #primaryKey: "id"
  #perPage: 15
  +incrementing: true
  #attributes: array:16 [?]
  #original: array:16 [?]
  #relations: []
  #hidden: []
  #visible: []
  #appends: []
  #guarded: array:1 [?]
  #dateFormat: null
  #casts: []
  #touches: []
  #observables: []
  #with: []
  #morphClass: null
  +exists: true
  +wasRecentlyCreated: false
}
]  
}
Run Code Online (Sandbox Code Playgroud)

第一个查询的结果:

LengthAwarePaginator {#428 ?
#total: 2
#lastPage: 1
#items: Collection {#430 ?
#items: array:2 [?
  0 => Tournament {#431 ?
    #table: "tournament"
    +timestamps: true
    #fillable: array:17 [?]
    #dates: array:2 [?]
    #connection: null
    #primaryKey: "id"
    #perPage: 15
    +incrementing: true
    #attributes: array:16 [?]
    #original: array:16 [?]
    #relations: []
    #hidden: []
    #visible: []
    #appends: []
    #guarded: array:1 [?]
    #dateFormat: null
    #casts: []
    #touches: []
    #observables: []
    #with: []
    #morphClass: null
    +exists: true
    +wasRecentlyCreated: false
  }
  1 => Tournament {#432 ?}
]
}
#perPage: "20"
#currentPage: 1
#path: "http://laravel.dev:8000/tournaments"
#query: []
#fragment: null
#pageName: "page"
}
Run Code Online (Sandbox Code Playgroud)

lag*_*box 5

在你的问题中,你paginate()很可能会调用一个集合.

在有效的答案中,你正在呼唤paginate()一位雄辩的建设者.

Auth::user()->tournaments; // dynamic property for relationship, probably a collection

Auth::user()->tournaments(); // relation type object (eloquent builder)
Run Code Online (Sandbox Code Playgroud)

你的答案:

$tournaments = Tournament::where('user_id',Auth::user()->id)
    ->paginate(Config::get('constants.PAGINATION'));
Run Code Online (Sandbox Code Playgroud)

where正在回复你正在呼唤的雄辩的建设者paginate.

这应该会给你相同的结果:

$tournaments = Auth::user()->tournaments()->paginate(...);
Run Code Online (Sandbox Code Playgroud)