在Laravel中使用paginate函数中的limit参数

时间:2017-04-18 13:32:43

标签: laravel eloquent laravel-eloquent laravel-query-builder laravel-pagination

是否可以在paginate()函数中使用'limit'参数?

我正在尝试这个:

console.log("#quick ##brown f#x".replace(/(\s+)\#+|^#/g,"$1"))

...现在,如果我在数据库中有100个用户,则paginate函数的响应将是所有100个用户而不是50个(或使用limit参数定义的用户数)。

所以,我的问题是:当我使用paginate函数时是否可以实现limit参数?

祝你好运, 感谢

6 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

是的,这是可能的! paginate documentation的第一个例子就是你要找的东西:

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

答案 2 :(得分:0)

  

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

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

答案 3 :(得分: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
);

答案 4 :(得分:0)

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

第一次

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

在下次点击

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

更多下一步点击

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

答案 5 :(得分:0)

正如@patricus所说,这是不可能的,但是您可以四处走走以获取所需的东西,就像这样:

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

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