Yap, sesuai dengan judul sekarang saya akan menjelaskan mengenai Migration & Schema Builder. Tapi saya ingin memberitahu dulu nih sob kalau Saya beberapa minggu ini sedang sibuk jadi agak telat Update Tutorialnya, semua yang saya jelaskan ini sambil lihat di beberapa Video Youtube & laravel.com kok jadi kalian bisa belajar disitu dulu ya :D
Migration adalah sebuah fasilitas dilaravel digunakan untuk mempermudah kita ketika ada perubahan dalam database. Schema Builder digunakan untuk membuat sebuah skema database. Dengan menggunakan migrations dan schema builder kita tidak perlu repot – repot membuka phpmyadmin , ataupun aplikasi Sql lainnya untuk membuat database. Dengan migrations dan schema builder juga akan lebih mudah ketika kita membuat project besar dan dengan developer yang berbeda-beda jadinya si developer ini tidak perlu import/export database tapi langsung saja menggunakan migration.
Sebelum kita praktekan langsung Migration, tentunya kita harus menghubungan Aplikasi Laravel kita dengan Mysql dong? Yap cara konfigurasi database nya mudah kok, silahkan sobat buka dulu config/database.php,
Default database nya MySQL, Jika sobat menggunakan SQLite atau PostgreSQL tinggal ganti pada defaultnya dan juga di file .env, dimana file .env? Ada difolder utama saat kita buka folder Laravel kita, sejajar dengan folder app, bootstrap, config, dkk :
Lalu untuk ganti default mysqlnya ganti disini :
Dan juga di .env nya ganti DB_CONNECTION=mysql ke database yang sobat gunakan misal SQLite, tapi saya disini menggunakan MySQL jadi saya biarkan saja.
Dan untuk setting localhost, username, dan password nya juga bisa kok langsung di mysql dalam file database.php seperti ini :
TAPI, cara ini tidak disarankan ya sob. Kenapa? Karena saat kita develop Aplikasi Laravel dengan beberapa teman project atau teamwork, saat temen kita buka Project kita, bakal ketauan dong username, password kita? JADI, sebaiknya di database.php nya dibiarkan default saja, lalu ganti di .env seperti ini jadinya :
Karena saat kita upload Project kita di github atau dimana saja, .env akan dibiarkan atau tidak akan terupload, File .gitignore lah yang membuat .env tidak akan terupload, isi script nya seperti ini :
Jadi di .gitignore itu terdapat di nama folder /vendor, folder /node_modules/ .env, dkk folder itu semua tidak akan terupload, sesuai dengan isi .gitignore nya,
Balik ke .env, saya sudah setting DB_DATABASE=laratest jadi sobat buat dulu database nya di phpmyadmin, silahkan beri nama apa saja dan sesuaikan dengan di .env, masukkan username nya, lalu password sobat, jika tidak memakai password biarkan saja DB_PASSWORD= kosong seperti itu.
Oke kita sudah selesai konfigurasi database nya, sekarang langsung kita praktekkan seperti apa fitur Migration pada Laravel itu, Saat kita install Laravel, terdapat langsung dua migration table, bisa kita lihat pada folder database/migrations/, terdapat migration create_users_table , dan satunya create_password_resets_table tapi kita tidak memakai itu , untuk contoh silahkan kita buka dulu file migration yang create_users_table.php, dan disitu hanya terdapat dua metode yaitu up dan down, fungsi metode up() untuk membuat table / membuat kolom, sedangkan down() untuk menghapus table atau kolom.
Pada metode up, terdapat Schema seperti yang sudah kita jelaskan sebelumnya, selain untuk membuat dan menghapus table dengan schema kita bisa buat spesifikasi kolom table nya misal increment, string, timestamps, dll
Sekarang kita bikin ulang migration baru, dua migration bawaan Laravel kita hapus saja dulu, lalu kita ke command line untuk membuat migration create_blogs_table, tapi pada class nya nanti akan otomatis menjadi CreateBlogsTable, ketikkan pada cmd script dibawah ini :
php artisan make:migration create_blogs_table --create=blogs
Jika hasilnya seperti ini :
Ket :
create_blogs_tableadalah nama migrationnya,--create=blogsadalah nama untuk table nya.
Berarti kita sudah berhasil membuat migrationnya sekarang kita liat migration kita pada database/migration/,
Kita liat isinya , dan nama class nya seperti kita bilang tadi dia otomatis menjadi CreateBlogsTable. Sekarang pada metode up kita mau isi kolom-kolom apa saja yang ada di table blogs, saya buat isinya gini :
Catatan : Jika ingin mengetahui tipe data nya lebih banyak bisa langsung ke sini.
Lalu kita push/kita jalankan migration untuk membuat table nya pada database kita, untuk menjalankan nya ketikkan lagi pada cmd (pastikan menjalankan cmd nya pada folder Laravel) :
php artisan migrate
Hasilnya :
Berarti kita sudah berhasil, lalu bisa sobat cek pada phpmyadmin nya di database laratest (sesuaikan dengan database sobat).
Terdapat 2 table, table blogs dan migrations. Table migrations itu otomatis buat nyimpen data nya jadi maksudnya table migrations otomatis nyimpen / nyatat class migration apa saja yang sudah kita jalankan, sedang kan table blogs itu adalah hasil yang kita buat tadi.
Kita buka struktur table blogs tadi :
Yap, ternyata hasil nya sesuai dengan yang kita buat pada class migration di Laravel. Tapi mungkin masih ada yang belum tau kenapa ada kolom created_at dan updated_at? Itu hasil yang kita buat di migration kita tadi yang $table->timestamps(); jika tidak terpakai bisa sobat hapus saja.
Kita sudah menjalankan migration metode up, lalu kita ingin tau fungsi metode down? Seperti yang ada di isi down itu Schema::drop berarti akan ngehapus table terakhir yang kita jalankan tadi. Contoh nya sobat bisa menjalankan command line ini pada cmd :
php artisan migrate:rollback
Hasilnya :
Coba sobat buka lagi pada database nya, dan table blogs sudah tidak ada. Tapi misalnya ingin mengembalikan lagi? Ya tinggal jalankan php artisan migrate tadi, mudahkan :D
Selesai penjelasan saya kali ini, saya minta maaf karena telat update ya sob.
Semoga bisa dimengerti dengan mudah, Pantau terus dan share jika bermanfaat sob!
Terimakasih.

