6

是否可以在 paginate() 函数中使用“限制”参数?

我正在尝试这个:

$users->where(...)->limit(50)->paginate($page)

...现在,如果我在数据库中有 100 个用户,那么 paginate 函数的响应将是全部 100 个用户而不是 50 个(或使用限制参数定义的用户数)。

所以,我的问题是:当我使用分页功能时,是否可以实现限制参数?

4

5 回答 5

8

不,使用分页时无法限制查询。

查询分页使用skip()limit()内部来选择正确的记录。任何limit()应用于查询的内容都将被分页要求覆盖。

如果您想对结果子集进行分页,则需要先获取结果,然后为这些结果手动创建分页器。

于 2017-04-18T18:39:40.460 回答
0

如果你想在 Laravel 查询中使用限制,那么我们将使用偏移量进行分页。

第一次

$users->where(...)->limit(10)->offset(0);

下次点击时

$users->where(...)->limit(10)->offset(10);

更多下一次点击

$users->where(...)->limit(10)->offset(20);

于 2020-03-20T12:50:28.603 回答
0

正如@patricus 所说,这是不可能的,但你可以四处走走以获得你想要的东西,它会是这样的:

$users=User::where(...)->limit(50);
$users=$user->paginate(10);

这个技巧对我有用,但经过一番思考,我意识到我真的不需要应用这个解决方案,因为分页已经限制了查询。您所需要的只是满足您需求的正确查询。

于 2020-07-21T18:06:21.403 回答
0

使用 LengthAwarePaginator。

例子:

$total = 50;
$perPage = 10;
$users = $users->where(...)->paginate($page);

$users = new LengthAwarePaginator(
    $users->toArray()['data'], 
    $users->total() < $total ? $users->total() : $total, 
    $perPage, 
    $page
);
于 2017-11-17T12:01:42.723 回答
-1

默认情况下,当前页面由 HTTP 请求上的页面查询字符串参数的值检测。当然,这个值是 Laravel 自动检测到的,也会自动插入到分页器生成的链接中。

所以,通知页面和分页,一切都应该没问题。

于 2017-10-15T17:19:40.393 回答