正确使用拉拉维尔的分页方法?



当我使用以下语句使用paginate方法时:

$user = User::where('id', 1)->first();
$images = $user->images->paginate(3);

我收到以下错误:

方法 Illuminate\Database\Eloquent\Collection::p aginate not 存在

但是,当我使用以下语句调用它时:

$images = Image::where('user_id', $user->id)->paginate(3);

它相应地工作...我对拉拉维尔相当陌生,所以请原谅我的无知,但结果差异的原因是什么?两个语句不都返回集合吗?

paginate是查询生成器的方法,而不是集合。如果要对集合进行分页,则需要进行手动分页:

$imagesPage = new LengthAwarePaginator($user->images->forPage($page,3), $user->images->count(), 3, $page); //Where $page is the current page number

或者,您可以对查询生成器进行分页:

$images = $user->images()->paginate(3); 

请注意,如果使用第二种方法,则无需急切加载图像。

最新更新