Ubah suai nilai penomboran dalam kaedah model Laravel dengan memintas permintaan
P粉295728625
P粉295728625 2024-03-22 14:16:16
0
2
719

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粉295728625
P粉295728625

membalas semua(1)
P粉127901279

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan