当我做:
$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)
在你的问题中,你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)
| 归档时间: |
|
| 查看次数: |
13716 次 |
| 最近记录: |