当我对以下语句使用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);
它相应地工作…我对拉勒维尔还不太熟悉,所以请原谅我的无知,但结果不同的原因是什么?这两个语句不都返回集合吗?
最佳答案
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);
请注意,如果使用第二种方法,则不需要急于加载图像。