Как создать пагинацию в laravel?
Моя модель
Сообщение
function comments() {
return $this->hasMany('Comment')
->orderBy('created_at', 'desc');
}
Комментарий
function posts(){
return $this->belongsTo('Post');
}
пользователь
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
Чего я хочу достичь
Я хочу создать нумерацию страниц из 10 комментариев на странице.
Заранее благодарны за Вашу помощь.
У вас есть два варианта: вы можете позвонить paginate()
на запрос отношения, или вы можете вручную создать paginator.
Вызов paginate()
в запросе отношения (использует функцию отношения):
$user = User::find(1);
$comments = $user->comments()->paginate(10);
Вручную создайте paginator (использует атрибут отношений):
$user = User::find(1);
$paginator = Paginator::make($user->comments, $user->comments->count(), 10);
Документацию по пагинации можно найти Вот.
Попробуй это,
$ only10comments = User :: with (‘comments’) -> paginate (10);
Если вы используете следующие, предыдущие ссылки в нумерации страниц, тогда используйте simplePaginate.
$ only10comments = User :: with (‘comments’) -> simplePaginate (10);
Надеюсь это поможет.