Migration Laravel
Pada tutorial laravel ini, akan dibahas tentang pengertian migration, cara membuat file migration dan cara menggunakannya. juga dibahas tentang kegunaan dan apa saja keuntungan jika kita menggunakan fitur migration pada laravel ini, terlebih jika kita mengerjakan aplikasi menggunakan laravel dengan tim.
Pengertian Migration Laravel
Migration adalah sebuah fitur yang ada pada laravel, migration merupakan Control Version System untuk database. dengan menggunakan migration laravel, memungkinkan kita untuk mengelola database dengan lebih mudah.
Dengan menggunakan migration, kita bisa membuat table data dengan lebih mudah dan cepat. migration akan membuat atau meng-generate file-file migration sebagai control system. file-file ini lah yang bisa dikirim oleh programmer antara satu sama lain saat sedang membuat aplikasi.
Contoh, misalnya programmer A menangani proses pembuatan untuk data mahasiswa, Programmer B menangani proses pembuatan data dosen. dan programmer C menangani proses pembuatan data KRS dan KHS mahasiswa.
Nah, jika si programmer A melakukan perubahan pada table data mahasiswa nya, si programmer A ini tinggal mengirimkan file migration mahasiswa ke programmer yang lain agar bisa di migrate. jadi tidak perlu lagi export import file sql seperti yang selama ini kita lakukan.
Seperti yang sudah dijelaskan sebelumnya, migration menjadi control version system untuk bagian database, misalnya programmer A melakukan perubahan pada table mahasiswa, dan jika programmer A ingin mengembalikan lagi ke data sebelumnya, programmer A tinggal me-rollback.
Cara Membuat & Menggunakan Migration
Untuk membuat migration caranya kita bisa menggunakan perintah php artisan seperti sebelum-sebelumnya. dimana sebelumnya juga sudah dijelaskan tentang pengertian php artisan. dimana php artisan merupakan perintah atau kata kunci untuk menjalankan perintah-perintah laravel melalui command line atau terminal.
oh ya, jangan lupa melakukan konfigurasi database terlebih dulu pada file .env.
Silahkan buat database dan sesuaikan pengaturan koneksi databasenya pada file .env ini. di sini saya sudah memiliki database dengan nama belajar_laravel.
Buka file .env, kemudian sesuaikan dengan koneksi database teman-teman.
1
2
3
4
5
6
|
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=belajar_laravel
DB_USERNAME=root
DB_PASSWORD=root
|
Baca : Konfigurasi dasar pada laravel (.env)
Teman-teman bisa langsung membuka terminal atau CMD, masuk ke direktori project laravel teman-teman melalui terminal atau cmd, kemudian untuk membuat migration kita bisa mengetikkan perintah berikut.
php artisan make:migration nama_migration
saya contohkan, misalnya kita akan membuat sebuah tabel mahasiswa, maka saya mengetikkan perintah
php artisan make:migration create_mahasiswa_table
Perhatikan gambar berikut.
maka akan muncul pemberitahuan bahwa migration telah dibuat dengan nama 2019_01_06_082107_create_mahasiswa_table.
lengkap dengan tanggal migration dibuat pada awal nama file nya. yaitu tanggal 6, bulan 1 dan tahun 2019.
Migration akan dibuat pada folder database/migrations.
Di sana sudah ada migration bawaan default dari laravel, yaitu untuk membuat table user. yang ini akan kita bahas pada tutorial laravel selanjutnya, yaitu pada tutorial membuat login laravel. jadi sekarang kita abaikan dulu.
Sekarang coba buka file migration mahasiswa yang sudah kita buat di atas.
Dalam file migration ini, laravel sudah membuatkan 2 buah method atau function secara otomatis. yaitu method up() untuk membuat table. dan method down() untuk menghapus table atau rollback.
Pada method up() kita bisa menentukan kolum apa saja yang ingin kita buat pada table mahasiswa.
1
2
3
4
5
6
7
|
public function up()
{
Schema::create(‘mahasiswa’, function (Blueprint $table) {
$table–>increments(‘id’);
$table–>timestamps();
});
}
|
Secara default sudah ada kolum id dengan auto increment.
1
|
$table–>increments(‘id’);
|
dan sudah ada timestamps untuk membuat column created_at dan updated_at secara otomatis.
1
|
$table–>timestamps();
|
Sedikit tambahan, fitur keren lagi dari laravel adalah laravel secara otomatis membuatkan kita kolum created_at yang akan menyimpan tanggal berapa record data tersebut dibuat, dan updated_at yang akan menyimpan data tanggal kapan record data tersebut di update. dan itu dilakukan secara otomatis oleh laravel.
jadi teman-teman jangan bingung. cukup ikuti saja tutorial ini, seiring perjalanan teman-teman akan paham sendiri saat teman-teman sudah mulai membuat table dengan migration.
Kita kembali ke topik,
Untuk membuat column lainnya pada table dengan migration, ada banyak sekali perintah yang bisa kita gunakan. berikut ini saya rangkum beberapa perintah yang akan sering sekali teman-teman gunakan ke depannya.
$table->increments(โidโ); | Untuk membuat kolum table yang menggunakan auto increment dengan type int, seperti yang biasa digunakan untuk membuat kolum id |
$table->bigIncrements(โidโ); | Membuat kolum dengan type BigInt dan auto increment |
$table->bigInteger(โvotesโ); | Membuat kolum dengan type BigInt |
$table->boolean(โconfirmedโ); | Membuat Kolum dengan type boolean (true dan false) |
$table->char(โnameโ, 100); | Membuat kolum dengan type varchar dengan jumlah 100 |
$table->date(โcreated_atโ); | Membuat kolum dengan type date |
$table->dateTime(โcreated_atโ); | Membuat kolum dengan type datetime |
$table->decimal(โamountโ, 8, 2); | Membuat kolum dengan type decimal |
$table->integer(โvotesโ); | Membuat kolum dengan type integer / int |
$table->string(โnameโ, 100); | Membuat kolum dengan type varchar dan jumlah 100 |
$table->longText(โdescriptionโ); | Membuat kolum dengan type text yang panjang |
$table->text(โdescriptionโ); | Membuat kolum dengan type text |
$table->year(โbirth_yearโ); | Membuat kolum dengan type year |
Pokoknya ada banyak sekali perintah yang bisa kita gunakan untuk membuat kolum-kolum pada table dengan menggunakan migration. teman-teman bisa lihat selengkapnya di sini. karena yang saya list di sini hanya sebagian yang sering digunakan saja.
Karena di sini saya membutuhkan kolum nama, nim dan alamat, maka function up() nya saya buat menjadi seperti berikut.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateMahasiswaTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create(‘mahasiswa’, function (Blueprint $table) {
$table–>increments(‘id’);
$table–>string(‘nama’);
$table–>integer(‘nim’);
$table–>text(‘alamat’);
$table–>timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists(‘mahasiswa’);
}
}
|
Silahkan teman-teman sesuaikan dengan kolum-kolum yang ingin teman-teman buat sesuai keinginan.
Kemudian kita bisa langsung mengetikkan perintah berikut pada terminal atau cmd teman-teman. agar file migration kita di jalankan. oh ya sebaiknya file migration yang lain (selain file migration yang kita buat barusan) di hapus saja dulu. di sini saya menghapus file migration user dan reset password. jadi cuma tinggal file migration mahasiswa saja.
Oke ketik perintah berikut.
php artisan migrate
Sekarang coba teman-teman lihat database nya, pasti sudah jadi table mahasiswanya.
Perhatikan, ada 2 table yang di generate oleh migration. yaitu table mahasiswa sesuai dengan yang kita buat tadi. dan satunya lagi table migrations. table migrations secara default dibuat oleh laravel saat kita menggunakan migration. karena table migrations ini berguna untuk menyimpan semua data atau log migration yang kita lakukan.
dan perhatikan juga table mahasiswa, seperti yang sudah saya jelaskan sebelumnya. dengan fungsi atau perintah $table->timestamps(); akan otomatis membuatkan kita kolum created_at dan updated_at yang akan menyimpan kapan record data tersebut dibuat atau diupdate.
Sangat keren kan teman-teman fitur migration laravel ini.
Sampai disini teman-teman telah bisa membuat table dengan migration.
Merubah Nama table Dengan Migration Laravel
Untuk rename table dengan menggunakan Migration, sudah ada fungsi yang disediakan. teman-teman bisa menggunakan perintah
1
|
Schema::rename(‘nama_table_yang_ingin_di_rename’, ‘nama_baru’);
|
Tapi saya lebih sering mengubah nama table dengan langsung mengubah nama table pada fungsi up(). dan kemudian ketik perintah php artisan migrate.
Menghapus Table Dengan Migration
Untuk menghapus table dengan migration laravel, juga sudah ada fungsi atau method nya.
1
|
Schema::drop(‘nama_table’);
|
atau
1
|
Schema::dropIfExists(‘nama_table’);
|
Cara Rollback Migration Laravel
Seperti yang sudah saya jelaskan di awal tutorial ini, migration seperti menjadi control version system, semua perubahan database yang kita lakukan dengan migration semuanya di data, sehingga kita bisa melakukan rollback dengan mudah saat kita ingin mengubah format table ke versi sebelumnya sebelum kita ubah.
Kita bisa melakukan rollback dengan mengetik perintah php artisan berikut pada terminal atau cmd.
1
|
php artisan migrate:rollback
|
Atau jika kita ingin merollback beberapa langkah perubahan sebelumnya, kita bisa menambahkan perintah
1
|
php artisan migrate:rollback —step=5
|
Tergantung teman-teman ingin mengembalikan datanya ke perubahan yang keberapa.
Oke, Sekian dulu tutorial migration laravel. sampai jumpa pada tutorial laravel selanjutnya.