Laravel Tutorial #4 : Migration Laravel
Pada part ini kita akan belajar apa itu migration pada Laravel. Singkatnya begini, migration adalah suatu cara yang bisa kita gunakan untuk membuat skema database kita secara langsung dengan mengeksekusi kode program, bukan melalui eksekusi SQL. Dengan menggunakan migration, kita menggantikan kode SQL dengan kode program PHP untuk membuat skema database kita. Masih bingung? Saya harap teman-teman tidak bingung. Kalau masih bingung, mungkin kalau dikasih contoh bisa lebih memahami. Semoga ya ~
Sebelum kita melanjutkan pembuatan migration, pertama sekali kita perlu merancang database kita. Seperti yang saya ceritakan dipart sebelumnya, kita akan membuat aplikasi untuk mengolah daftar artikel. Data yang kita perlukan adalah data pengguna dan data artikel. Relasi antara tabel user dan tabel artikels adalah one to many, artinya setiap orang bisa memiliki banyak artikel.
Sebelum memulai pembuatan file migration, pertama sekali coba teman-teman hapus semua file migration yang sudah ada pada folder database\migrations.
Membuat File Migrasi
Untuk membuat file migrasi, kita akan menggunakan Artisan CLI seperti yang pernah saya jelaskan di part sebelumnya. Untuk membuat file migrasi kita, jalankan perintah berikut.
$ php artisan make:migration create_artikels_table
Mari kita bedah perintah diatas :
- php adalah perintah untuk menjalankan PHP, kita butuhkan ini karena Artisan CLI dibuat menggunakan bahasa pemrograman PHP
- artisan adalah perintah untuk menjalankan artisan itu sendiri
- make: adalah perintah untuk membuat file baru, diikuti dengan parameter migration untuk menunjukkan bahwa kita akan membuat file migration. Untuk membuat file lainnya, bisa mengganti parameternya sesuai kebutuhan kita dan contohnya sudah ada pada part sebelumnya.
- create_artikels_table adalah parameter yang menginformasikan kepada Artisan bahwa file migration yang akan kita buat adalah untuk menciptakan tabel artikels. Perlu diperhatikan, awalan create_ diperlukan untuk menginformasikan Artisan bahwa kita akan membuat tabel, dengan demikian Artisan akan men-generate file migration yang lebih lengkap dibanding tanpa menggunakan awalan create_ .
Berikut adalah contoh pembuatan file migration dengan penggunaan awalan create_ . Perintah yang saya jalankan adalah
php artisan make:migration create_artikels_table...
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('artikels', function (Blueprint $table) {
$table->bigIncrements('id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('artikels');
}
}
Berikut adalah contoh pembuatan file migration tanpa penggunaan awalan create_ . Perintah yang saya jalankan adalah
php artisan make:migration add_artikels_table
....
class AddArtikelsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
}
use Illuminate\Support\Facades\Schema;
Kita bisa melihat perbedaan pada kedua fungsi up() dan down() . Pada file migration yang ter-generate dengan penggunaan awalan create_ , fungsi up() dan down() sudah mengenali nama tabel yang akan kita buat secara otomatis. Berbeda dengan file migration yang ter-generate tanpa penggunaan awalan create_ , fungsi up() dan down() masih kosong, sehingga kita perlu menambahkannya secara manual. Itu salah satu trik untuk membuat file migration pada Laravel agar kerjanya lebih cepat.
Salah satu tips yang juga sangat berguna adalah mengikuti aturan penamaan yang sesuai standar Laravel, hal ini akan sangat membantu kita. Contoh yang bisa kita terapkan dalam pembuatan file migration adalah pada Laravel nama sebuah tabel ditandai dengan kata jamak sedangkan untuk modelnya dikenali dengan kata tunggal. Artinya untuk model dengan nama User akan dipadankan dengan tabel dengan nama users dan untuk model dengan nama Artikel akan dipadankan dengan tabel dengan nama artikels. Jika kita tidak mengikuti aturan penamaan ini, kita perlu menentukan secara manual apa nama tabel yang berpadanan dengan model kita.
Melengkapi File Migrasi
Tahapan berikutnya adalah melengkapi file migration kita. Pada file migration create_users_table , lengkapi fungsi up() seperti contoh dibawah ini.
....
bigIncrements('id');
$table->string('title');
$table->string('author');
$table->text('description');
$table->timestamps();
});
}
....
}
bigIncrements('id');
$table->string('title');
$table->string('author');
$table->text('description');
$table->timestamps();
});
}
....
}
Mari kita bedah potongan kode program diatas.
Schema::create('artikels', … adalah kode program untuk membuat tabel. Parameter artikels adalah sebagai nama tabel yang akan dibuat. Jika diterjemahkan ke kode program SQL maka perintah diatas sama dengan CREATE TABLE artikels(....
$table->bigIncrements('id') adalah kode program untuk membuat atribut id dengan ketentuan bertipe data big int, unsigned, bersifat not null, bersifat auto_increment, dan dijadikan sebagai primary key. Unsigned artinya nilainya tidak akan bisa negatif, not null artinya tidak boleh dikosongkan, auto_increment artinya akan bertambah secara otomatis ketika menambah data baru. Jika diterjemahkan ke kode program SQL maka perintah diatas sama dengan 'id' int unsigned not null auto_increment primary key .
$table->string('title') adalah kode program untuk membuat atribut name dengan ketentuan bertipe data varchar(255) dan bersifat not null. Varchar(255) artinya adalah tipe berupa rangkaian karakter dengan panjang maksimal 255 karakter, sama dengan 255 bit, karena setiap karakter membutuhkan alokasi memori sebesar 1 bit. Angka 255 adalah angka default dan bisa diganti dengan kebutuhan panjang data kita dengan cara mengubah kode program menjadi $table->string('title', 100) , untuk panjang maksimal 100 karakter. Jika diterjemahkan ke kode program SQL maka perintah diatas sama dengan 'name' varchar(255) not null. Hal yang sama berlaku juga untuk kode program $table->string(‘author’).
$table->text('description'), Metode text digunakan untuk mendefinisikan kolom dengan tipe data 'text'. Dalam kasus ini, kita memberi nama kolom tersebut 'description'. Tipe data 'text' umumnya digunakan untuk menyimpan teks panjang atau data yang mungkin memerlukan lebih banyak ruang, seperti deskripsi atau catatan.
$table->timestamps() adalah potongan kode untuk membuat atribut created_at dan updated_at dengan ketentuan timestamp null. Timestamp adalah tipe data untuk menyimpan tanggal dan waktu sekaligus. Null artinya tidak wajib disini. Jika diterjemahkan ke kode program SQL maka perintah diatas sama dengan 'created_at' timestamp null, 'updated_at’ timestamp null.
Mengeksekusi File Migrasi Setelah file migration kita lengkapi, maka saatnya untuk mengeksekusi file migration kita. Kita akan menggunakan Artisan CLI untuk mengeksekusi file migration kita. Sebelumnya, pastikan teman-teman sudah mengisi konfigurasi koneksi ke database pada file .env . Lalu jalankan perintah berikut.
php artisan migrateJika tidak ada pesan error yang muncul itu pertanda bahwa migration berjalan dengan benar. Coba perhatikan database teman-teman, jika migration berjalan dengan baik seharusnya tabel users dan tabel artikels sudah tercipta.
Haruskah dengan Migration?
Bagi teman-teman yang terbiasa dengan merancang skema database menggunakan database GUI tools mungkin agak janggal menggunakan migration. Saya juga dulu seperti itu kok. Tetapi kita tidak diwajibkan untuk menggunakan migration untuk pengembangan aplikasi dengan framework Laravel. Teman-teman bisa juga menggunakan cara biasa yang teman-teman pakai untuk merancang database.
Tapi setelah mengetahui kelebihan menggunakan migration, saya selalu menggunakan migration untuk setiap proyek Laravel yang saya kerjakan. Oke Itu adalah penjelasan singkat yang saya ketahui seputar migration di Laravel, semoga bermanfaat. Terimakasih!







