Rumah > rangka kerja php > Laravel > Contoh untuk menerangkan cara melaksanakan fungsi paging secara manual dalam Laravel

Contoh untuk menerangkan cara melaksanakan fungsi paging secara manual dalam Laravel

PHPz
Lepaskan: 2023-04-14 09:46:32
asal
1089 orang telah melayarinya

Laravel ialah rangka kerja aplikasi web sumber terbuka percuma yang ditulis dalam PHP. Ia telah lama menjadi salah satu piawaian dalam bidang pembangunan web Dengan sintaksnya yang ringkas, reka bentuk yang cantik dan kebolehskalaan yang berkuasa, ia telah disambut baik oleh majoriti pembangun.

Kaedah penomboran Laravel sendiri Paginator juga merupakan salah satu ciri khasnya. Walau bagaimanapun, kadangkala kita perlu melaksanakan paging secara manual untuk memenuhi keperluan khas. Jadi, mari perkenalkan secara terperinci cara melaksanakan fungsi paging secara manual.

Persediaan

Sebelum mula melaksanakan paging secara manual, kita perlu memasang komponen Laravel yang dipanggil illuminate/support Pakej ini menyediakan beberapa fungsi tambahan yang kecil tetapi penting. Ia boleh dipasang melalui Komposer:

composer require illuminate/support
Salin selepas log masuk

Selepas pemasangan selesai, kita perlu menambah pembekal dalam fail config/app.php projek Laravel:

'providers' => [
    // ...
    Illuminate\Support\ServiceProvider::class,
    // ...
],
Salin selepas log masuk

Dengan cara ini, kita boleh Menggunakan fungsi paging yang disediakan oleh Laravel.

Laksanakan paging secara manual

Anda boleh menggunakan kaedah Paginator Laravel sendiri untuk menomborkan hasil pertanyaan, tetapi ini akan menyebabkan pangkalan data ditanya dua kali, dan kadangkala prestasi mungkin tidak sebaik pelaksanaan manual . Cara untuk melaksanakan paging manual adalah dengan menggunakan pelaksanaan Koleksi yang disediakan oleh Laravel.

Pertama, kami mentakrifkan parameter yang diluluskan: $perPage mewakili bilangan item yang dipaparkan pada setiap halaman, $page mewakili nombor halaman semasa.

public function manualPaginate($perPage, $page)
{
    $records = DB::table('table_name')->get(); // 从数据库中取出所有记录

    $total = count($records); // 根据记录总数获取总条数

    $start = ($page - 1) * $perPage; // 获取这一页的起始位置

    $records = collect($records); // 将获取的记录转换成 Collection 类型

    $pageData = $records->slice($start, $perPage); // 获取这一页的记录

    $paginator = new LengthAwarePaginator( // 将分页数据封装成分页器
        $pageData,
        $total,
        $perPage,
        $page,
        [
            'path' => LengthAwarePaginator::resolveCurrentPath(), // 当前页的 URL 地址
            'pageName' => 'page',
        ]
    );

    return $paginator; // 返回分页器对象
}
Salin selepas log masuk

Dalam kod di atas, kami mula-mula mendapatkan semula semua rekod daripada pangkalan data, kemudian memperoleh jumlah bilangan rekod melalui jumlah bilangan rekod, dan kemudian mendapatkan kedudukan permulaan halaman ini dan rekod daripada halaman ini, Tukarkan rekod yang diperoleh kepada jenis Koleksi, kemudian isikan data pager ke dalam pager melalui kelas LengthAwarePaginator, dan akhirnya mengembalikan objek pager.

Dalam paparan, anda boleh mendapatkan elemen penomboran dalam cara berikut:

{{-- 获取分页数据 --}}
@foreach ($paginator as $item)
    <tr>
        <td>{{ $item->id }}</td>
        <td>{{ $item->name }}</td>
        <td>{{ $item->email }}</td>
    </tr>
@endforeach

{{-- 获取分页链接 --}}
{{ $paginator->links() }}
Salin selepas log masuk

Pada ketika ini, kami telah melaksanakan fungsi halaman secara manual. Sudah tentu, ini hanyalah contoh mudah, dan logik pemprosesan yang lebih kompleks mungkin diperlukan dalam situasi sebenar. Walau bagaimanapun, melalui pelaksanaan mudah ini, kita boleh mempunyai pemahaman yang lebih mendalam tentang prinsip paging manual, dan ia juga boleh memberikan kita beberapa idea untuk menyesuaikan fungsi paging dalam projek sebenar.

Atas ialah kandungan terperinci Contoh untuk menerangkan cara melaksanakan fungsi paging secara manual dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan