Pada artikel sebelumnya, penulis telah menjelaskan bagaimana cara melakukan setup project laravel, mulai dari konfigurasi vagrant hingga mengenerate project laravel. Pada artikel kali ini, penulis akan membahas mengenai database migration, seed dan model pada laravel.
Konfigurasi Vim Pada Vagrant
Sebelum memulai ngoding, alangkah baiknya kita melakukan konfigurasi terlebih dahulu terhadap text editor yang akan kita gunakan. Vim merupakan salah satu text editor yang sangat banyak digunakan, terdapat banyak plugin yang dapat kita gunakan untuk memudahkan dalam proses development.
Tahap pertama, kita akan melakukan konfigurasi plugin pathogen pada vim, silahkan jalankan perintah berikut.
Setelah selesai, langkah selanjutnya silahkan lakukan clone plugin berikut per baris.
Silahkan atur thema terminal anda menjadi solarized dark. Sekarang silahkan buka file .vimrc
dengan vim, jalankan perintah berikut.
Kemudian masukkan script untuk konfigurasi seperti berikut.
Jika berhasil, maka output yang diharapkan adalah seperti berikut, vim akan memunculkan warna solarized dark dan juga menampilkan penomoran.
Belajar Perintah Vim
Sebelum kita lanjut, kita harus benar - benar bisa terlebih dahulu menggunakan vim :D. Tidak seperti text editor biasa yang langsung kita gunakan, vim mempunya beberapa perintah diantaranya adalah.
vim nama file
biasanya digunakan untuk membuat atau mengubah isi dari file tersebut.i
atau insert berfungsi agar kita dalam melakukan perubahan pada file yang sedang aktif dan akan muncul tulisan insert dibagian bawah.esc
untuk keluar dari mode edit document atau keluar dari perintahi
sehingga document tidak dapat diubah.:w
atau write berfungsi untuk menyimpan sebuah document yang telah kita buat atau yang telah kita ubah, jika anda telah selesai melakukan perubahan silahkan tekanesc
lalu ketikan perintah:w
maka document akan tersimpan.:q
atau quit artinya anda keluar dari text editor.:wq
atau write and quit artinya anda akan keluar dari text editor dan menyimpan perubahan file.:q!
quit artinya anda keluar dari text editor tanpa menyimpan perubahan pada document.:sp nama file
split horisontal artinya anda dapat membagi screen window editor anda berdasarkan horisontal.:vsp nama file
split vertikal artinya anda dapat membagi screen window editor anda berdasarkan vertikal.ctrl + w + w
berfungsi untuk berpindah dari 1 window ke window yang lain.
Membuat Database Migration Pada Laravel
Setelah selesai belajar vim, langkah selanjutnya kita akan mencoba membuat database migration pada laravel. Database migration merupakan salah satu fitur dari laravel untuk mempermudah developer dalam mengembangkan schema database yang ingin digunakan. Di dalam bahasa pemrograman lain juga tersedia database migration seperti ruby on rails pada ruby, flyway pada java dan lain - lain.
Karena project yang akan kita buat adalah sebuah perpustakaan maka disini kita akan membuat database migration mengenai perpustakaan. Berikut adalah ERD dari pada aplikasi perpustakaan yang akan kita buat.
Bagi yang masih bingung cara membaca ERD tersebut silahkan baca artikel belajar membuat foreign key pada h2 database. Nah setelah mengetahui tentang ERD nya, selanjutnya kita akan membuat database migration dengan menggunakan perintah artisan pada laravel. Untuk membuat database migration untuk tabel buku maka jalankan perintah berikut.
Jika berhasil maka outputnya akan seperti berikut.
Langkah selanjutnya untuk membuat database migration untuk tabel mahasiswa, silahkan jalankan perintah berikut.
Untuk tabel peminjaman, silahkan jalankan perintah berikut.
Setelah selesai, tahap selanjutnya kita akan mengubah schema dari tabel - tabel yang telah kita buat. Silahkan buka file database migration untuk tabel buku yang berada di dalam folder database/migrations
, biasanya filenya mengikuti format tanggal dan waktu pada saat membuat database migration, contohnya seperti berikut.
dimana 2016 adalah tahun, 05 adalah bulan, 18 adalah tanggal dan 111241 adalah sebagai waktu. Silahkan buka file database migration untuk tabel buku dengan perintah.
Silahkan ganti dan sesuaikan huruf x dengan tanggal dan waktu pada saat file dibuat. Setelah dibuka, lalu silahkan ubah codingannya seperti berikut.
Dari codingan diatas dapat dilihat bahwa kita akan membuat sebuah tabel buku dengan nama tabel tb_buku
. Disini penulis menggunakan uuid sebagai primary key sehingga tidak akan terjadi kerangkapan data. Langkah selanjutnya silahkan buka database migration untuk tabel mahasiswa dengan perintah.
Kemudian ubah codingannya seperti berikut.
Struktur codingan diatas tidak ada yang berbeda dengan codingan sebelumnya, hanya saja disini terlihat berbeda pada bagian jenis kelamin, dimana pada bagian jenis kelamin kita akan menggunakan enum, mengapa enum ? dikarenakan jenis kelamin merupakan sebuah pilihan dan penulis ingin menjaga agar datanya tetap konsisten, jadi jika kita telah menetapkan pria dan wanita adalah sebagai jenis kelamin, maka user tidak dapat melakukan inputan selain pria dan wanita meskipun user ingin melakukan inputan data laki - laki dan perempuan, ini disebabkan data laki - laki dan perempuan tidak terdapat di dalam list enum. Selanjutnya silahkan buka database migration untuk tabel peminjaman, silahkan jalankan perintah berikut.
Kemudian ubah codingannya seperti berikut.
Codingan untuk tabel peminjaman lumayan berbeda dengan tabel - tabel sebelumnya, mengapa demikian ? dikarenakan disini kita menggunakan foreign key untuk menghubungkan antara tabel buku, barang dan peminjaman. Relasi antara tabel mahasiswa dan peminjaman adalah one to many cascade sehingga apabila data mahasiswa dihapus maka secara otomatis data pada tabel peminjaman juga akan dihapus secara otomatis karena sifat cascade. Berbeda dengan tabel buku, tabel buku memiliki relasi one to many terhadap tabel peminjaman, akan tetapi tidak cascade sehingga apabila tabel buku dihapus, maka tabel peminjaman tidak ikut dihapus.
Setelah semuanya selesai, kita akan menjalankan migration tersebut. Akan tetapi sebelum menjalankan migration, kita harus terlebih dahulu melakukan konfigurasi pada environment. Silahkan buka file .env
dengan perintah berikut.
Kemudian ubah konfigurasi untuk koneksi database mysql menjadi seperti berikut.
Note : yang diubah hanyalah konfigurasi koneksi database mysql saja, jangan melakukan perubahan pada konfigurasi lain, terutama pada konfigurasi APP_KEY, karena jika key yang digunakan tidak sesuai dengan key yang digenerate pada saat proses pembuatan project maka akan muncul error key tidak valid.
Setelah selesai, lakukan akses database mysql dengan perintah berikut.
Kemudian masukkan password root
. Sebenarnya kita menggunakan database mariadb, bukan database mysql akan tetapi perintah yang digunakan adalah sama. Kemudian silahkan buat database perpustakaan
dengan perintah berikut.
Setelah selesai, silahkan keluar dari mysql dengan perintah exit
. Kemudian silahkan jalankan database migration dengan perintah berikut.
Jika berhasil maka akan muncul output seperti berikut.
Membuat Model Pada Laravel
Pada artikel sebelumnya, penulis telah menjelaskan bahwa laravel menggunakan pendekatan mvc pada projectnya. Nah yang pertama kali kita buat adalah model, dimana model ini merupakan represntasi dari pada tabel atau data yang terdapat pada database. Karena pada database migration terdapat 3 tabel maka kita harus membuat 3 model untuk mewakili tabel - tabel yang ada di database migration.
Untuk membuat model untuk buku, silahkan jalankan perintah berikut.
Di bagian model, kita harus mengubah codingan sedikit dikarenakan nama tabel yang akan kita gunakan berbeda, silahkan buka model buku pada folder app
dengan perintah.
Kemudian ubah codingannya menjadi seperti berikut.
Wah beda banget sama codingan php biasanya :O, ada namespace dan use. Yups, sebenarnya tidak banyak perbedaan, mungkin jika anda awalnya pernah belajar java, di java terdapat package dan dapat melakukan import maka di php juga bisa akan tetapi hanya berbeda pada penamaan nya saja. Jika di java terdapat package maka di php kita menggunakan namespace, jika di java kita mengenal import maka di php kita mengenal use :). Pada model buku ini, kita mendeklarasikan nama tabel dimana $table
ini sebenarnya merupakan override dari class model sehingga kita mengubah nama default dari tabel yang akan kita gunakan. Function peminjamans
merupakan function yang penulis buat sendiri dengan tujuan karena model buku mempunya relasi dengan model peminjaman dan relasi ini adalah one to many sehingga pada tabel master yaitu buku dapat memiliki banyak peminjaman.
Untuk membuat model mahasiswa, silahkan jalankan perintah berikut.
Kemudian ubah codingan pada model mahasiswa seperti berikut.
Untuk membuat model peminjaman, silahkan jalankan perintah berikut.
Kemudian ubah codingan pada model peminjaman seperti berikut.
Nah berbeda dengan codingan sebelumnya, karena model peminjaman ini hanya memiliki 1 buku dan 1 mahasiswa maka dia harus menggunakan perintah belongsTo
untuk melakukan relasi dengan model buku dan mahasiswa.
Membuat Database Seed Pada Laravel
Setelah selesai dengan model, langkah selanjutnya adalah membuat database seed pada laravel. Database seed ini berfungsi sebagai data awal atau bisa disebut sebagai data dami. Biasanya database seed ini digunakan untuk melakukan testing pada aplikasi atau untuk melakukan sebuah uji coba dengan jumlah data yang diperlukan. Karena terdapat 3 model maka kita membuat database seed sebanyak 3, dimana untuk membuat database seed untuk model buku, silahkan jalankan perintah berikut.
Untuk database seed model mahasiswa, silahkan jalankan perintah berikut.
Untuk database seed model peminjaman, silahkan jalankan perintah berikut.
Langkah selanjutnya, silahkan buka file ModelFactory.php
yang ada di dalam folder database/factories
kemudian silahkan tambahkan codingan seperti berikut.
Untuk melakukan inisialisasi data, kita dapat melakukan nya di bagian model factory, dimana data akan secara otomatis diinisialisasikan oleh library faker. Library faker dapat melakukan generate data yang kita inginkan misalnya seperti nama orang, alamat, penomoran, uuid dan lain sebagainya. Dapat dilihat, bahwa di dalam class model factory, penulis membuat 3 seed untuk masing - masing model, nantinya datanya akan secara otomatis diinsert ke database. Pada bagian peminjaman terdapat perbedaan yaitu pada bagian npm
dan id_buku
, perbedaan ini dikarenakan pada saat melakukan insert pada peminjaman, maka data buku dan data mahasiswa diwajibkan terlebih dahulu ada. Apabila database seed peminjaman dijalankan maka secara otomatis akan dibuatkan data mahasiswa dan buku terlebih dahulu baru akan dibuatkan data peminjaman.
Kemudian silahkan buka file BukuTableSeeder.php
yang terdapat di dalam folder database/seeds
kemudian isikan codingan seperti berikut.
Bisa dilihat bahwa pada class ini, jika database seed dijalankan maka akan ada sebanyak 20 data buku yang akan diinput ke database. Hal ini juga berlaku pada database seed mahasiswa dan peminjaman, untuk database seed mahasiswa, silahkan buka file MahasiswaTableSeeder.php
kemudian ubah codingannya menjadi seperti berikut.
Setelah selesai, silahkan buka file PeminjamanTableSeeder.php
kemudian ubah codingannya menjadi seperti berikut.
Setelah selesai, langkah selanjutnya adalah kita harus mendeklarasikan masing - masing database seed yang telah kita buat ke dalam konfigurasi database seed. Silahkan buka file DatabaseSeeder.php
yang terdapat di dalam folder database/seeds
kemudian ubah codingannya menjadi seperti berikut.
Akhirnya kita berada pada tahap yang terakhir :D. Tahap terakhir adalah kita akan menjalankan database seed yang telah kita buat sebelumnya :). Untuk menjalankan database seed silahkan jalankan perintah berikut.
Jika berhasil maka akan muncul output seperti berikut.
Atau jika anda ingin melakukan database migration sekaligus dengan database seed juga bisa dengan menjalankan perintah berikut.
Berikut adalah output jika anda berhasil menjalankan perintah diatas.
Jika anda masih penasaran dengan database seed apakah telah diinput datanya atau belum, silahkan lakukan pengecekan pada database mariadb anda :).
Sekian tutorial belajar laravel bagian 2, untuk bagian selanjutnya InsyaAllah akan segera di publish dan Terima kasih :).