Minggu, 30 September 2018

Membuat Halaman Pagination dengan Laravel

Membuat Halaman Pagination dengan Laravel


laravel

Intro

             Ketika kita membuat aplikasi dan dihadapkan dengan ribuan bahkan jutaan record data yang harus ditampilkan maka kita perlu membaginya menjadi beberapa halaman. Pagination dapat menjadi solusi yang cukup baik untuk mengatasi hal tersebut. Mayoritas framework sudah menyediakan fitur ini tanpa mengharuskan kita untuk membuatnya dari awal. Namun dalam tutorial ini kita akan belajar tentang menggunakan pagination pada Framework Laravel.
         Seperti dikutip pada Laravel Documentation bahwa dengan laravel kita bisa membuat pagination dengan mudah. Laravel dapat dengan cepat menghasilkan rentang halaman dari halaman sekarang dan menghasilkan link ke halaman yang diinginkan.
            Disarankan sebelum mengikuti tutorial ini kita sudah bisa menginstall project Laravel, routing dan bisa menampilkan data dari database. Untuk itu kita bisa enroll course Mari Berselancar dengan Framework Laravel untuk mempelajari cara installasi dan menampilkan database sebelum mengikuti tutorial ini.

Apa itu Pagination?

Pagination merupakan proses membagi dokumen ke dalam halaman terpisah, baik halaman elektronik atau halaman yang dicetak (Wikipedia). Intinya sih pagination adalah sebuah proses menampilkan data, dimana data yang ditampilkan akan ditampilkan dengan membaginya menjadi beberapa bagian/halaman secara merata.

Cara Penggunaan

Pada framework Laravel kita dapat mengimplementasikan pagination dengan Eloquent maupun Query Builder. Method paginate bisa menentukan berapa jumlah data yang ingin kita tampilkan di setiap halaman dimana proses menampilkan data sudah ditangani oleh Laravel. Kita tau beres aja.

Pagination Eloquent

Pertama, kita panggil method paginate pada sebuah model. Pada method paginate kita diminta untuk menambahkan parameter yang menunjukan jumlah data yang ingin kita tampilkan per halamannya. Dalam kasus ini kita akan menampilkan 15 data atau konten per halaman.

<?php

namespace App\Http\Controllers;

use App\User;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    /**
     * Show all of the users for the application.
     *
     * @return Response
     */
    public function index()
    {
        $users = User::paginate(15);

        return view('user.index', ['users' => $users]);
    }
}
 
Dengan method paginate memungkinkan kita untuk menggunakan constraints pada query seperti where:
$users = User::where('votes', '>', 100)->paginate(15);
 
"Simple Pagination"
Selain paginate, kita juga bisa menggunakan method simplePaginate yang hanya akan menampilkan Next dan Previous pada link pada halaman tampilan.
$users = User::simplePaginate(15);

Pagination Query Builder

Kita juga dapat mengimplementasikan method pagination pada Query Builder. Pada contoh di bawah ini kita akan membuat halaman tabel user dengan 15 data/record per halaman. Seperti di atas, kode program yang dituliskan mirip dengan implementasi pagination dengan Eloquent Model.

<?php

namespace App\Http\Controllers;

use DB;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    /**
     * Show all of the users for the application.
     *
     * @return Response
     */
    public function index()
    {
        $users = DB::table('users')->paginate(15);

        return view('user.index', ['users' => $users]);
    }
}
 
Kita juga bisa menggunakan method simplePaginate ketika membuat halaman dengan Query Builder.
$users = DB::table('users')->simplePaginate(15);
Saat ini, operasi pagination yang menggunakan method GroupBy tidak bisa dijalankan secara efisien oleh Laravel. Jika Kamu ingin menggunakan GroupBy dengan set hasil paginasi, direkomendasikan untuk menggunakan query database dan membuat paginator secara manual.

Menampilkan Hasil Pagination pada View

Di sini kita akan memanggil method paginate atau simplePaginate.
views/user/index.blade.php
<div class="container">
    @foreach ($users as $user)
        {{ $user->name }}
    @endforeach
</div>

{!! $users->render() !!}

0 komentar:

Posting Komentar

Diberdayakan oleh Blogger.

Like on Facebook

Breaking News

animasi blog
style="position:absolute;

Menu - Pages

Beauty

Text Widget

Formulir Kontak

Nama

Email *

Pesan *

animasi blog

Pages

About

Travel

Blogger templates

Most Trending

Popular Posts