Belajar Laravel 10 : A simple guide CRUD app - Menampilkan Data

Assalamualaikum Warahmatullahi Wabarakatuh, Pada artikel ini adalah lanjutan dari artikel sebelumnya. Jadi silahkan simak secara runtut untuk dapat lebih mendalami tentang membuat crud sederhana menggunakan laravel 10. Pada sesi kali ini saya akan membahas cara menampilkan data dari database menggunakan Laravel 10. Selain itu saya juga menjelaskan cara mengambil data dari dataTable menggunakan ajax.

Silahkan lakukan secara berurutan sesuai artikel ini ya.

 

Routes

Langkah pertama kita mengubah routes terlebih dahulu. Karena pengaksesan awal dari sebuah aplikasi website yang pertama dijalankan adalah membaca routes. Jika client ingin mengakses url tertentu, maka sistem akan membaca melalui rotes terlebih dahulu apakah url/route tesebut tersedia atau nggak atau methodnya diperbolehkan apa tidak.

Silahkan ubah route root ( / ) menjadi dibawah ini.

Route::get('/', [ BukuController::class, "index" ]);
Route::post('datanya', [ BukuController::class, "dataTable" ])->name('dataTable');

pada kode diatas sistem akan membaca jika client mengakses url root ( / ) maka akan memanggil/mengeksekusi BukuController dengan function index.

Sedangkan pada route /datanya ialah untuk fetching data dari ajax. Disini kita menggunakan method post dalam method httpnya dan akan memanggil/mengeksekusi BukuController dengan function dataTable.

 

Ubah Controller

Setelah itu buka app/Http/Controllers/BukuController.php, silahkan tambahkan kode dibawah ini didalam class BukuControllers

Penjelasan:

Pada kode diatas function index akan mengeksekusi function view dimana view() ini adalah memanggil template kita.

Pada function dataTables adalah proses pengambilan data melalui komunikasi dengan ajax.

 

$totalFilteredRecord = $totalDataRecord = $draw_val = "";

Pertama kali kita akan mendefinisikan 3 variable diatas dengan string yang tidak ada valuenya.

 

$columns_list = array(
            0 =>'judul_buku',
            1 =>'tahun_terbit',
            2=> 'stok_buku',
            3=> 'gambar_buku',
            4=> 'id',
        );

Setelah itu kita akan mendefinisikan kolom apa saja yang akan kita gunakan untuk ditampilkan pada layout. Disini kita menggunakan 4 kolom yaitu:

  • judul_buku
  • tahun_terbit
  • stok_buku
  • gambar_buku
  • id

 

$totalDataRecord = Buku::count();
$totalFilteredRecord = $totalDataRecord;
$limit_val = $request->input('length');
$start_val = $request->input('start');
$order_val = $columns_list[$request->input('order.0.column')];
$dir_val = $request->input('order.0.dir');

Lalu kita mendefinisikan beberapa variable, yakini:

  • totalDataRecord untuk menyimpan jumlah total data dari database
  • totalFilteredRecord untuk menyimpan jumlah total data yang terfilter dari database
  • limit_val untuk menerima inputan/pilihan jumlah inputan limit data yang ingin ditentukan dalam menampilkan data
  • start_val untuk menyimpan data awal atau sebagai flag bahwa data tersebut adalah data yang pertama
  • order_val untuk menyimpan hasil pengurutan sesuai 4 kolom yang kita pilih dipejalasan atas tadi
  • dir_val untuk menyimpan pengurutan apakah descending atau ascending

 

        if(empty($request->input('search.value')))
        {
            $buku_data = Buku::offset($start_val)
            ->limit($limit_val)
            ->orderBy($order_val,$dir_val)
            ->get();
        } else {
            $search_text = $request->input('search.value');

            $buku_data =  Buku::where('id','LIKE',"%{$search_text}%")
            ->orWhere('judul_buku', 'LIKE',"%{$search_text}%")
            ->offset($start_val)
            ->limit($limit_val)
            ->orderBy($order_val,$dir_val)
            ->get();

            $totalFilteredRecord = Buku::where('id','LIKE',"%{$search_text}%")
            ->orWhere('judul_buku', 'LIKE',"%{$search_text}%")
            ->count();
        }

Setelah itu sistem akan mengecek apakah pengunjung melakukan pencarian data atau tidak.

Jika tidak melakukan pencarian data, maka sistem akan mengambil data yang disimpan pada variable buku_data.

Lalu jika pengunjung melalukan pencarian data, maka sistem akan menerima kata pencarian tersebut akan disimpan pada variable search_text.

Sistem akan mencarikan data berdasarkan id atau judul buku yang nantinya akan disimpan di variable buku_data untuk proses selanjutnya.

Kita membutuhkan jumlah dari data pencarian tersebut, maka kita perlu menghitungnya dengan Eloquent count() lalu disimpan pada variable totalFilteredRecord

 

Selanjutnya kita perlu menyimpan data yang didapat dari variable buku_data menyesuaikan format kolom yang ada pada layout kita.

Pertama-tama kita menginisialisasikan variable data_val sebagai array.

Jika variable buku_data tersebut tidak kosong, maka kita akan membuat array object. Disini kita menggunakan 5 object yaitu

  • judul_buku sebagai penampung data judul buku
  • tahun_terbit sebagai penampung data tahun terbit buku
  • stok_buku sebagai penampung data stok buku
  • gambar_buku sebagai penampung data html gambar sampul buku
  • options sebagai penampung data html options button edit delete berdasarkan id

Simpan kedalam variable data_val

 

Langkah terakhir kita perlu menyesuaikan format/struktur json yang diminta oleh dataTables.

 $draw_val = $request->input('draw');
        $get_json_data = array(
        "draw"            => intval($draw_val),
        "recordsTotal"    => intval($totalDataRecord),
        "recordsFiltered" => intval($totalFilteredRecord),
        "data"            => $data_val
        );

        echo json_encode($get_json_data);

variable draw_val menerima dari sisi client.

intval() merupakan mendapatkan nilai integer dari suatu variabel.

 

Layouting

Langkah terakhir kita layouting blade. Silahkan buat didalam folder resources/views/crudapp/ berikan nama filenya index.blade.php .

 

Jalankan Server

Akhir dari sesi ini, pastinya kalian harus cobain dong.

Jalankan server local kalian, bisa menggunakan perintah dibawah ini

php artisan serve

maupun jika menggunakan laragon atau apapun. setelah itu silahkan buka melalui browser lalu akses ke url domain-mu/

 

Hasil Percobaan

Silahkan lihat video ini

 

Oke sampai sini kita telah berhasil melakukan menampilkan data dengan dataTables menggunakan ajax dari Laravel 10.

Wassalamualaikum Warahmatullahi Wabarakatuh.

 

Nah, bagaimana caranya agar data yang kita inputkan bisa ditampilkan?

Simak di artikel selanjutnya

Belajar Laravel 10 : A simple guide CRUD app - Mengubah Data

Baca sesi lainnya:

Belajar Laravel 10 : A simple guide CRUD app - Menambah Data

Belajar Laravel 10 : A simple guide CRUD app - Menampilkan Data

Belajar Laravel 10 : A simple guide CRUD app - Mengubah Data

Belajar Laravel 10 : A simple guide CRUD app - Menghapus Data

Apabila artikel ini membantu kamu, dan jika kamu memiliki sedikit rezeki, mohon dukungannya dalam bentuk segelas kopi melalui URL dibawah ini:

Last Updated: Sabtu, 4 Maret 2023 17:07 GMT+7

Comments