正确使用Laravel的分页方法?

时间:2018-05-08 05:48:11

标签: php laravel pagination

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

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

我收到以下错误:

  

方法Illuminate \ Database \ Eloquent \ Collection :: paginate没有   存在

然而,当我用以下声明称呼它时:

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

它的作用相应......我对Laravel相当新,所以请原谅我的无知,但结果差异的原因是什么?这两个语句都没有返回集合吗?

1 个答案:

答案 0 :(得分:2)

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); 

请注意,如果您使用第二种方法,则不需要急切加载图片。