Laravel Pagination

2019-01-28 07:36发布

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.

2条回答
▲ chillily
2楼-- · 2019-01-28 07:51

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.

查看更多
The star\"
3楼-- · 2019-01-28 08:01

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.

查看更多
登录 后发表回答