Laravel Pagination

雨燕双飞 提交于 2019-11-30 09:24:52

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!