如何在laravel中分页?分页方法不存在

时间:2019-05-14 22:26:20

标签: php laravel eloquent

尝试获取每个用户的最新任务,因此,如果有100个用户,我希望每页只显示10个,但是它不起作用。 添加分页方法时,出现以下错误:

方法Illuminate \ Database \ Eloquent \ Collection :: paginate不存在。

如果删除该方法,则一切正常,我得到预期的结果,我只是想分页。 这是我的代码:

$users = User::with('latestTask')->get()->paginate(10);

4 个答案:

答案 0 :(得分:0)

您需要直接调用该方法,而无需使用get()

$users = User::with('latestTask')->paginate(10);

在刀片中,您可以使用

$variable_name->links()

答案 1 :(得分:0)

您无法对集合进行分页

$users = User::with('latestTask')->get();

要进行分页,应在雄辩的结果上使用方法paginate():

$users = User::with('latestTask')->paginate(10);

,然后在视图中放入链接:

{{ $users->links() }}

答案 2 :(得分:0)

使用分页时不需要使用 get()。只需遵循以下代码即可。

$users = User::with('latestTask')->paginate(10);

用户模型将自动处理请求,并以paginate($number_of_rows)方法中的自变量的形式获取数据数量。

您还可以将 orderBy()用作方法链接格式,如下所示。

$users = User::with('latestTask')->orderBy($column,'asc')->paginate(10);

答案 3 :(得分:0)

尽管其他答案是正确的,但我想指出其背后的原因...

get()执行查询并返回一个集合,这意味着您不再构建/修改sql查询

paginate()在执行之前应在元素查询本身上调用,以便可以向查询中添加偏移量和限制...

这就是为什么应该这样

$users = User::with('latestTask')->paginate(10);

您可以在错误中看到 Illuminate\Database\Eloquent\Collection方法不存在分页,因为分页不是集合的一部分

引用laravel文档https://laravel.com/docs/5.8/pagination

  

有几种分页项目的方法。最简单的方法是在&query builder Eloquent查询

上使用分页方法