如何在 laravel 中的急切加载关系中创建分页

How to create pagination in eager loaded relationship in laravel

提问人:Baby Babai 提问时间:5/29/2023 更新时间:5/29/2023 访问量:27

问:

我希望分页在急切加载关系中发生,但是当我使用它时,我得到了一个错误。 这仅在我在视图中使用时才会发生,而不是一切正常,因为当我删除它时,页面会以分页方法中设置的数字加载。Method Illuminate\Database\Eloquent\Collection::links does not exist.{{ $SubjectReport->reports->links() }}{{ $SubjectReport->reports->links() }}

这是我到目前为止尝试过的

这是我的控制器

$SubjectReport = Subject::with(['assesment.curriculumUnit',
    'reports' => function($q) {
    $q->orderBy('id','DESC')->paginate(2);
}])->where('id',2)->first();
 
return view('learner.assesment_reports',compact('SubjectReport'));

这是我的观点


@foreach ($SubjectReport->reports as $key => $report)

@endforeach

{{ $SubjectReport->reports->links() }}

php laravel-8 雄辩关系 急切

评论


答:

1赞 lezhni 5/29/2023 #1

不幸的是,无法正确使用分页。它只返回部分数据。 对关系进行分页的最佳方法是:withCollectionPaginator

$SubjectReport = Subject::with('assesment.curriculumUnit')->where('id',2)->first();
$SubjectReport->reports = $SubjectReport->reports()->orderBy('id','DESC')->paginate(2);