在我的Laravel應(yīng)用程序中,我有一個(gè)API入口點(diǎn),在這里我收集我的應(yīng)用程序的初始數(shù)據(jù),例如我獲取帖子、標(biāo)簽、用戶的分頁(yè)結(jié)果...
我對(duì)所有記錄使用paginate:15,但對(duì)于用戶,我想使用paginate:30,因?yàn)樵谖业恼?qǐng)求參數(shù)中有類似這樣的內(nèi)容:
page=1&paginate=15
有沒有辦法在我的控制器方法內(nèi)將它更改為30
初始控制器
$users = $this->userService->getUsersPaginated($request); $users = $this->vuePaginate($users);
在我的User模型中:
public function getUsersPaginated($request) { $users = User:: paginate($request['paginate']); return $users; }
根據(jù)用戶類型,評(píng)估是否可以在前端處理分頁(yè)大小。
無論如何,如果您想在后端處理它,您可以找到一個(gè)條件來設(shè)置分頁(yè)大小。
例如:
if ($currentUser->role == 'final-user') // 或類似的條件 $perPage = max (30, $request['paginate']); else $perPage = $request['paginate']; $users = User::paginate($perPage);
我還建議您為分頁(yè)設(shè)置一個(gè)最小值和最大值,以避免來自前端的錯(cuò)誤值引起問題(想象一下如果您得到一個(gè)像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); /* ... */
還要注意,默認(rèn)的分頁(yè)器請(qǐng)求變量是per_page