在我的Laravel应用程序中,我有一个API入口点,在这里我收集我的应用程序的初始数据,例如我获取帖子、标签、用户的分页结果...
我对所有记录使用paginate:15,但对于用户,我想使用paginate:30,因为在我的请求参数中有类似这样的内容:
page=1&paginate=15
有没有办法在我的控制器方法内将它更改为30
初始控制器
$users = $this->userService->getUsersPaginated($request); $users = $this->vuePaginate($users);
在我的User模型中:
public function getUsersPaginated($request)
{
$users = User::
paginate($request['paginate']);
return $users;
} Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
根据用户类型,评估是否可以在前端处理分页大小。
无论如何,如果您想在后端处理它,您可以找到一个条件来设置分页大小。
例如:
我还建议您为分页设置一个最小值和最大值,以避免来自前端的错误值引起问题(想象一下如果您得到一个像1,000,000或-1这样的值)
const DEFAULT_RESULTS_PER_PAGE = 15; const FINAL_USER_RESULTS_PER_PAGE = 30; const MAX_RESULTS_PER_PAGE = 100; /* ... */ public function getUsersPaginated($request) { $perPage = min (max ($request['paginate'] ?: self::DEFAULT_RESULTS_PER_PAGE, 1), self::MAX_RESULTS_PER_PAGE); if (/* condition */) $perPage = max (self::FINAL_USER_RESULTS_PER_PAGE, $perPage); $users = User::paginate($perPage); /* ... */还要注意,默认的分页器请求变量是per_page