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_table
adalah nama migrationnya,--create=blogs
adalah 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.