CRUD Pada Framework Laravel dan Penerapannya dengan Database yang Sudah Ada (Part I)

Albarra Naufala Erdanto
8 min readOct 18, 2019

--

Setelah kita mengenal framework dan MVC pada tulisanku sebelumnya, hal yang perlu kamu ketahui selanjutnya adalah CRUD. CRUD merupakan akronim dari Create, Read, Update, dan Delete. Operasi CRUD adalah manipulasi dasar yang harus ada pada database. Dengan CRUD, kebutuhan manipulasi data akan terpenuhi.

Sebelum mengenal lebih lanjut, alangkah baiknya kamu untuk sudah membaca mengenai framework dan juga MVC.

Framework yang kita akan pakai adalah framework laravel seperti framework pada pembahasan sebelumnya. Untuk saat ini, kita akan membahas Create dan Read saja, untuk Update dan Delete akan dibahas pada pembahasan selanjutnya. Data yang akan kita manipulasi adalah data Employees yang berasal dari database hr yang kita punya.

Pertama, kamu harus mengimport databasenya terlebih dahulu.

Untuk file databasenya dapat kamu download disini. File tersebut merupakan file yang bertipe .sql. Setelah kamu mendownloadnya, file tersebut perlu kamu simpan di directory mysql yaitu …/xampp/mysql/bin.

Setelah itu, yang kamu perlu lakukan selanjutnya adalah membuat database baru pada mysql. Kali ini kita akan tidak memakai phpmyadmin, tapi kita akan menggunakan terminal, caranya:

  1. Masuk ke terminal (CMD pada windows), lalu arahkan menuju directory …/xampp/mysql/bin.

2. Lalu Ketik mysql -u [username] -p [password].

Jika kamu belum pernah mengubah username dan password, maka username default kamu adalah root dan passwordnya kosong. Maka, perintahnya akan menjadi seperti ini, mysql -u root -p lalu tekan ENTER. Kamu akan disuruh mengisi password mysql, lalu cukup kamu tekan ENTER. Taraa.. Maka kamu sudah masuk ke menu mysql-nya.

3. Buat database baru (anggap saja database baru yang bernama hr)

Kamu cukup mengetikkan CREATE DATABASE hr;

4. Lalu keluar mysql dengan mengetik exit

5. Setelah itu import database yang kamu download tadi (hr.sql) ke dalam database yang barusan kamu buat (hr) dengan cara mengetik:
mysql -u root -p hr < hr.sql

Maka kamu telah berhasil mengimport database hr.sql ke dalam database yang kamu buat.

Kedua, hubungkan database kamu ke projek laravel kamu.

Kamu cukup buka file .env pada projek laravel kamu lalu ubah isinya. Isinya menyesuaikan dengan nama database kamu.

Pada contoh di atas, kita isi DB_DATABASE dengan hr (sesuai dengan nama database kita). Maka dari itu, projek laravel kamu sudah terhubung dengan database yang sudah kamu punya.

Ketiga, buatlah model sesuai tabel yang ada di database kamu.

Untuk mengetahui tabel apa saja yang kamu punya di database kamu, kamu hanya perlu menuliskan perintah (query) pada mysql kamu, yaitu:
USE hr;
Lalu tulis
SHOW TABLES;
Maka tabel yang kamu punya akan tampil.

Kamu sekarang mengetahui tabel yang kamu punya. Oleh karena itu, kamu mengetahui juga model yang perlu kamu buat, yaitu:
1. Country
2. Department
3. Employee
4. Job
5. Location
6. Region
Dikarenakan kita hanya akan hanya memanipulasi data Employee, maka model yang perlu kamu buat adalah:
1. Employee
2. Department
3. Job
Untuk membuat model pada laravel, kamu hanya perlu memberikan perintah php artisan make:model [Nama Model] di terminal. Namun, sebelum itu kamu harus arahkan terminal kamu ke …/xampp/htdocs/[Nama Projekmu]/. Jika kamu ingin membuat model sekaligus controller, maka kamu cukup menambahkan -r pada perintah pembuatan model.

Pada kasus di atas maka perintahnya yaitu:
1. php artisan make:model Employee -r (dengan controller karena kita akan memanipulasi data Employee)
2. php artisan make:model Department
3. php artisan make:model Job

Keempat, buatlah hubungan atau relationship model pada laravel kamu sesuai dengan hubungan tabel di database kamu.

Untuk mengetahui hubungan suatu tabel dengan tabel lain, kamu dapat mengetahuinya dengan foreign key yang dimiliki tabel tersebut. Foreign Key adalah atribut yang menghubungkan tabel tersebut dengan Primary Key tabel yang lain.

Pada kasus yang kita punya, kita perlu mengetahui foreign key dari tabel Employee. Karena kita akan memanipulasi tabel Employee. Kamu dapat mengetahuinya dengan cara memberi perintah pada mysql yaitu:
DESC employees;

Pada struktur tabel employees di atas, kita tahu bahwa foreign key nya adalah job_id, manager_id, dan department_id. Maka dari itu, tabel employees memiliki hubungan dengan tabel jobs dan departments. Atribut manager_id akan terisi otomatis sesuai department_id yang ada, karena setiap department memiliki managernya masing-masing.

Sekarang kita perlu mengetahui kardinalitas dari suatu hubungan. Kardinalitas merepresentasikan banyaknya instance suatu entitas atau tabel dengan entitas yang lainnya. Ada beberapa kardinalitas, yaitu:
1. One to one (1:1)
2. One to many (1:N)
3. Many to one (N:1)
4. Many to many (N:M)

Pada kasus kita kali ini, banyak Employee dapat memiliki satu Job dan juga banyak Employee dapat memiliki satu Department. Maka dari itu Employee dengan Job dan Employee dengan Department memiliki kardinalitas Many to One (N:1). Pada laravel, kamu dapat menambahkan fungsi baru untuk menyatakan hubungan suatu model dengan model yang lain, yaitu (Sesuai kasus kita):

Untuk mengetahui fungsi lain pada kardinalitas lain, dapat kamu baca lebih lanjut disini.

Pada foto di atas, aku juga menambahkan variabel di atasnya. Pada baris 9, aku mendeklarasikan ‘employee_id’ sebagai Primary Key. Pada baris 10, hal tersebut perlu dilakukan jika kita memakai laravel dan memakai database tanpa migration. Pada baris 11, kita menetapkan atribut mana yang dapat kita isi.

Kelima, mencoba READ data dengan menampilkan data Employees.

Sebelumnya kita telah melakukan perintah membuat controller. Dengan begitu, kita telah memiliki EmployeeController.php di folder app/Http/Controller/. Pada EmployeeController kita telah disediakan beberapa fungsi untuk mempermudah proses CRUD. Untuk fungsi READ, kita memakai fungsi index(). Fungsi index kita tulis dengan kode berikut:

Setelah itu, kamu berarti akan membawa variabel employees yang berisi semua data Employees yang kamu punya dari database ke dalam halaman view employees.index. Arti dari employees.index adalah file index di dalam folder employees atau /employees/index.blade.php. Oleh karena itu, kamu harus membuat file viewnya terlebih dahulu.

Di dalam file index.blade.php, kamu harus membuat tampilan yang memungkinkan semua data akan tampil. Disini aku membuat tabel dengan bootstrap dan kemudian setiap baris kuisi dengan setiap data yang ada menggunakan foreach.

Karena kamu sudah menghubungkan Employee dengan Job, maka kamu bisa dengan mudah menampilkan nama job tanpa menambilkan job_id. hal tersebut perlu dilakukan karena pengguna tidak mungkin menghapal dari kode jobs yang kamu punya, maka dari itu kamu harus menampilkannya dengan namanya, begitu pula department. Pada kode di atas, aku menambahkan kode baru lagi, itu dikarenakan ada employees yang tidak memiliki department, oleh karena itu kamu perlu menambahkan kode baru seperti kode di atas.

Hal yang perlu kamu lakukan setelah itu adalah menyambungkan controller dan view dengan menambahkan kode baru di bagian Route. File Route terletak pada folder …/routes/web.php. Untuk mengetahui lebih lanjut apa itu Routes, kamu bisa membaca pembahasannya pada pembahasan sebelumnya disini. Setelah membuka file routes, maka kamu perlu menambahkan kode berikut:

Selamat, kamu telah berhasil menampilkan data employees ke dalam halaman kamu!

Keenam, mencoba CREATE atau menambah data Employee

Pertama, kamu harus membuat tombol untuk mengarahkan ke halaman tambah employees. Berikut kode tambahannya:

Lalu kamu tambahkan kode baris baru pada file Route. Dengan menuliskan kode berikut:

Lalu, kamu tambahkan kode berikut pada method create di controller EmployeeController. Isi kodenya adalah sebagai berikut:

Dengan menambahkan kode di atas berarti kamu akan membawa variabel departments, jobs, dan employee ke dalam tampilan employees.create. Oleh karena itu, kamu harus mempunyai file create.blade.php di dalam folder employees pada view. Setelah kamu membuat file tersebut, maka kamu perlu membuat tampilan formnya. Buatlah tampilan seperti ini:

Pada pemilihan job dan department, kamu memerlukan select option. Setiap option kamu isi tampilkan dengan nama job dan department, tapi value yang diisi adalah job_id dan department_id-nya. Karena, employee akan menyimpan job_id dan department_idnya. Untuk kode select optionnya adalah sebagai berikut:

Begitu juga kamu terapkan pada select option department. Disini kita lihat sebelumnya bahwa employees menyimpan atribut manager_id. Manager_id diisi tergantung dengan department yang dipilih. Maka dari itu, kamu perlu mengaturnya pada controller EmployeeController pada method store.

Sebelum kamu menuju method store kamu perlu mengisi method dan action pada tag form yang kamu punya. Kodenya adalah seperti berikut:

Setelah itu kamu menuju ke controller EmployeeController. Pada method store, kamu perlu memilih atribut mana yang perlu kamu simpan sesuai name pada input yang kamu tulis di file view. Kode pada method store adalah sebagai berikut:

Setelah kamu mengisi kode pada method store untuk menyimpan employee baru, maka hal yang perlu kamu lakukan terakhir adalah menyambungkan controller dan view melalui route seperti yang kita lakukan sebelumnya.

Maka kamu telah berhasil membuat CREATE pada halaman kamu!

Cukup itulah pembahasan kali ini, untuk Update dan Delete mungkin akan kita bahas selanjutnya! Tetap santuy dan semangat!!

--

--