亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

透過攔截請求在Laravel模型方法中修改分頁值
P粉295728625
P粉295728625 2024-03-22 14:16:16
0
2
1021

在我的Laravel應(yīng)用程式中,我有一個API入口點,在這裡我收集我的應(yīng)用程式的初始數(shù)據(jù),例如我獲取帖子、標(biāo)籤、用戶的分頁結(jié)果...

我對所有記錄使用paginate:15,但對於用戶,我想使用paginate:30,因為在我的請求參數(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;
    }
P粉295728625
P粉295728625

全部回覆(1)
P粉127901279

根據(jù)使用者類型,評估是否可以在前端處理分頁大小。

無論如何,如果您想在後端處理它,您可以找到一個條件來設(shè)定分頁大小。
例如:

if ($currentUser->role == 'final-user')  // 或類似的條件
   $perPage = max (30, $request['paginate']);
else
   $perPage = $request['paginate'];

$users = User::paginate($perPage);

我還建議您為分頁設(shè)定一個最小值和最大值,以避免來自前端的錯誤值引起問題(想像一下如果您得到一個像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);

    /* ... */

也要注意,預(yù)設(shè)的分頁器請求變數(shù)是per_page

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板