问题
How can I create a pagination in laravel?
My Model
Post
function comments() {
return $this->hasMany('Comment')
->orderBy('created_at', 'desc');
}
Comment
function posts(){
return $this->belongsTo('Post');
}
User
function posts(){
return $this->hasMany('Post');
}
function comments(){
return $this->hasMany('Comment');
}
UserController
$user = User::find(1); //this will give me all the user's post and comment details
//i know I can do $user = User::paginate(30) to get 30 user per page
What I want to Achieve
I want to create a pagination of 10 comment per page.
Thanks for your help in advance.
回答1:
You have two options: you can call paginate()
on the relationship query, or you can manually create a paginator.
Call paginate()
on the relationship query (uses the relationship function):
$user = User::find(1);
$comments = $user->comments()->paginate(10);
Manually create a paginator (uses the relationship attribute):
$user = User::find(1);
$paginator = Paginator::make($user->comments, $user->comments->count(), 10);
Pagination documentation can be found here.
回答2:
Try this,
$only10comments = User::with('comments')->paginate(10);
If you use next, previous links in pagination, then use simplePaginate.
$only10comments = User::with('comments')->simplePaginate(10);
Hope this helps.
来源:https://stackoverflow.com/questions/30534867/laravel-pagination