cari

Rumah  >  Soal Jawab  >  teks badan

Ubah suai nilai penomboran dalam kaedah model Laravel dengan memintas permintaan

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粉295728625P粉295728625270 hari yang lalu702

membalas semua(2)saya akan balas

  • P粉127901279

    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

    balas
    0
  • P粉092737458

    balas mesej

    P粉092737458 · 2024-03-27 11:28:55
  • Batalbalas