是否可以在paginate()函数中使用'limit'参数?
我正在尝试这个:
console.log("#quick ##brown f#x".replace(/(\s+)\#+|^#/g,"$1"))
...现在,如果我在数据库中有100个用户,则paginate函数的响应将是所有100个用户而不是50个(或使用limit参数定义的用户数)。
所以,我的问题是:当我使用paginate函数时是否可以实现limit参数?
祝你好运, 感谢
答案 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);
这个技巧对我有用,但是经过一番思考,我意识到我真的不需要应用此解决方案,因为分页已经限制了查询。您所需要的就是满足您需求的正确查询。