Laravel Pagination

2019-01-28 07:13发布

问题:

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.