Rumah > Soal Jawab > teks badan
Dalam aplikasi Laravel saya, saya mempunyai titik masuk API di mana saya mengumpul data awal untuk aplikasi saya seperti saya mendapat hasil penomboran untuk siaran, teg, pengguna...
Saya menggunakan paginate:15 untuk semua rekod, tetapi untuk pengguna saya mahu menggunakan paginate:30 kerana dalam parameter permintaan saya, saya mempunyai sesuatu seperti ini:
page=1&paginate=15
Adakah terdapat cara untuk menukarnya kepada 30 di dalam kaedah pengawal saya
Pengawal Awal
$users = $this->userService->getUsersPaginated($request); $users = $this->vuePaginate($users);
Dalam model Pengguna saya:
public function getUsersPaginated($request) { $users = User:: paginate($request['paginate']); return $users; }
P粉1279012792024-03-23 12:20:23
Berdasarkan jenis pengguna, nilai sama ada saiz paging boleh dikendalikan pada bahagian hadapan.
Apa pun, jika anda ingin mengendalikannya di bahagian belakang, anda boleh mencari syarat untuk menetapkan saiz paging.
Contohnya:
if ($currentUser->role == 'final-user') // 或类似的条件 $perPage = max (30, $request['paginate']); else $perPage = $request['paginate']; $users = User::paginate($perPage);
Saya juga mengesyorkan anda menetapkan nilai minimum dan maksimum untuk penomboran untuk mengelakkan masalah dengan nilai yang salah dari bahagian hadapan (bayangkan jika anda mendapat nilai seperti 1,000,000 atau -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); /* ... */
Juga ambil perhatian bahawa pembolehubah permintaan pager lalai ialah per_page