Belajar Migration dan Schema Laravel

Belajar Migration dan Schema Laravel

44

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 :

directory laravel

Lalu untuk ganti default mysqlnya ganti disini :

default mysql laravel

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 :

atur koneksi laravel

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 :

.env pada laravel

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 :

gitignore laravel

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 :

migration laravel 5.2

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/,

migration laravel 5 2

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 :

isi migration laravel

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 :

berhasil migrate

Berarti kita sudah berhasil, lalu bisa sobat cek pada phpmyadmin nya di database laratest (sesuaikan dengan database sobat).

database migrate laravel

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 :

struktur

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 :

migration rollback laravel 5 2

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.

Keywords: migrasi laravel, schema laravel

Share: