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.
Table of Contents
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

Comments