PWPB | Laravel [ Database Migration ]
Database Migration pada Laravel
Assalamualaikum wr wb, jumpa lagi bersama saya Muhammad Fahru di blog ini. Apa kabarnya teman teman semua, semoga kabarnya baik baik saja. Pada blog kali ini saya akan membagikan ilmu mengenai Migrasi Database pada Laravel. Setelah sebelumnya kita belajar mengenai dasar dasar Laravel dan cara passing data di Laravel. Mungkin materi kali ini cukup simple kita hanya akan membuat database, mengubah nama field pada database, dll. Tapi itu tidak dilakukan secara manual di DBMS kita, semua akan dilakukan menggunakan fungsi fungsi yang disediakan pada Laravel. Langsung saja kita ke materi nya, sebelum itu siapkan terlebih dahulu folder laravel kalian di text editor, xampp, DBMS, dan browser.
1. Persiapan
Buat Database baru dengan nama (bebas), buka file .env di folder Laravel kalian dan konfigurasi konesiksi Database di file tersebut menjadi Database yang baru saja kalian buat. Untuk contoh bisa dilihat di bawah ini :
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db_belajarLaravel (nama db kalian )
DB_USERNAME=root
DB_PASSWORD=
2. Buka terminal kalian dan arahkan untuk masuk ke dalam folder Laravel kalian, setelah itu ketikan perintah "php artisan make:migration create_t_siswa" pada terminal. Makan secara otomatis akan ada file baru di dalam folder database/migrations seperti gambar di bawah ini.
3. Edit file create_t_siswa dan masukan kodingan di bawah ini untuk membuat tabel baru. Sebelum itu saya akan menjelaskan function up dan down pada file migrations.
-) Function Up
Fungsi yang dijalankan ketika database di migrate, biasanya menjalankan perintah create table,
ataupun alter table
-) Function Down
Fungsi yang dijalankan ketika database di rollback, biasanya kebalikan dari fungsi yang
dikerjakan pada function up
Copy kodingan di bawah ini kedalam file migrations create t_siswa
Buat Database baru dengan nama (bebas), buka file .env di folder Laravel kalian dan konfigurasi konesiksi Database di file tersebut menjadi Database yang baru saja kalian buat. Untuk contoh bisa dilihat di bawah ini :
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db_belajarLaravel (nama db kalian )
DB_USERNAME=root
DB_PASSWORD=
2. Buka terminal kalian dan arahkan untuk masuk ke dalam folder Laravel kalian, setelah itu ketikan perintah "php artisan make:migration create_t_siswa" pada terminal. Makan secara otomatis akan ada file baru di dalam folder database/migrations seperti gambar di bawah ini.
3. Edit file create_t_siswa dan masukan kodingan di bawah ini untuk membuat tabel baru. Sebelum itu saya akan menjelaskan function up dan down pada file migrations.
-) Function Up
Fungsi yang dijalankan ketika database di migrate, biasanya menjalankan perintah create table,
ataupun alter table
-) Function Down
Fungsi yang dijalankan ketika database di rollback, biasanya kebalikan dari fungsi yang
dikerjakan pada function up
Copy kodingan di bawah ini kedalam file migrations create t_siswa
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateTSiswa extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('t_siswa', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('nis');
$table->string('nama_lengkap',100);
$table->string('jenis_kelamin',1);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('t_siswa');
}
}
4. Jalankan perintah migrate dengan perintah "php artisan migrate", seperti gambar di bawah ini
5. Periksa database anda, jika ada perubahan maka migrasi database anda berhasil, seperti gambar di bawah ini
6. Buat migrasi baru untuk menambahkan column golongan_darah, denga perintah seperti gambar di bawah ini
7. Edit file tersebut menjadi kodingan di bawah ini
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddGoldarTSiswa extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('t_siswa',function($table) {
$table->string('goldar',2)->after('jenis_kelamin');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('t_siswa',function($table) {
$table->dropColumn('goldar');
});
}
}
8. Jalankan perintah "php artisan migrate" dan lihat apakah ada column yang tertambah di database, jika berhasil maka akan tampil seperti gambar di bawah ini
9. Rollback Migrations
Misalnya, ada kesahalan penulisan pada file migrasi anda, tetapi migrasi sudah dilakukan.
Anda ingin melakukan perubahan file yang sudah berhasil di migrasi. Sebelumnya anda harus
melakukan rollback terlebih dahulu sebelum melakukan editing file migrasi tersebut. Jalankan
perintah php artisan migrate:rollback
-) Rollback dijalankan hanya ketika anda sudah berhasil melakukan migrasi
Pastikan anda melakukan rollback terlebih dahulu sebelum melakukan editing file migrasi untuk terhindar dari error
-) Rollback digunakan untuk melihat histori perubahan sebelumnya
Pada konsepnya, rollback digunakan untuk melihat perubahan apa yang terjadi sebelum file
file migrasi yang baru dimigrasikan. Pada prakteknya, untuk tetap menjaga histori database
gunakan fitur alter apabila terjadi kesalahan yang terjadi setelah anda melakukan migrasi
10. Jika sudah di rollback kita rubah isi file yang di rollback, contohnya seperti di bawah ini
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddGoldarTSiswa extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('t_siswa',function($table) {
$table->string('goldar',2)->after('jenis_kelamin');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('t_siswa',function($table) {
$table->dropColumn('goldar');
});
}
}
lalu seperti biasa migrate, lalu lihat ke database anda apakah berhasil atau tidak, jika berhasil maka di database akan ada yang berubah
11. Buat migrasi file untuk alter, kita akan merubah nama suatu column dengan yang baru
seperti biasa ketikan perintah "php artisan make:migrations nama_file "
Edit file tersebut menjadi kodingan di bawah ini
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class ChangeJenkelTSiswa extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('t_siswa',function($table) {
$table->renameColumn('jenis_kelamin','jenkel');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('t_siswa',function($table) {
$table->renameColumn('jenis_kelamin','jenkel');
});
}
}
sebelum kita menjalankan perintah "php artisan migrate", kita install terlebih dahulu package doctrne/dball untuk merename kolom.
setelah berhasil menginstall, kita lanjut dengan menjalankan perintah "php artisan migrate", setelah itu periksa di database kalian. Jika benar makan kolom akan berganti nama seperti gambar di bawah ini
Studi Kasus 1
Buatlah
migrasi baru
untuk
membuat
tabel
t_percobaan.
Cobalah
buat
minimal 15 field yang berbeda
pada tabel
tersebut
1. Buat migrasi create t_percobaan
2. Ubah kodingan di dalam file migrasi di atas menjadi seperti di bawah ini
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateTPercobaan extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('t_percobaan', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('nis');
$table->string('nama_lengkap',100);
$table->string('nama_panggilan',10);
$table->string('jenis_kelamin',1);
$table->string('alamat');
$table->string('tempat_lahir',100);
$table->string('tanggal_lahir',8);
$table->string('agama',20);
$table->string('status',20);
$table->integer('tinggi_badan',10);
$table->integer('berat_badan',10);
$table->integer('no_hp',10);
$table->string('hobi',50);
$table->string('cita_cita',50);
$table->string('warna_kesukaan',50);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('t_percobaan');
}
}
3. Setelah itu lakukan perintah php artisan migrate dan jika berhasil maka hasilnya akan seperti di bawah ini
Studi Kasus 2
1. buat migrasi file untuk t_kelas lalu ubah isi file tersebut dengan kodingan di bawah ini
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateTKelas extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('t_kelas', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('nama_kelas',20);
$table->string('jurusan',50);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('t_kelas');
}
}
2. Setelah itu lakukan migarate agar tabel dibuat di database. Jika berhasi maka tabel t_kelas akan muncul di database seperti contoh di bawah ini
3. buat file migrasi untuk penambahan field pada tabel t_kelas dengan perintah "php artisan make:migration". setelah dibuat, ubah isi file tersebut menjadi kodingan di bawah ini
4. setelah diubah, lakukan migrate seperti biasa dengan perintah "php artisan migrate". Jika berhasil maka akan muncul seperti di bawah ini
5. Jika kita ingin mengubah panjang dari field lokasi_lab menjadi 50 karakter kita menggunakan perintah "php artisan migration:rollback" jadi data yang tadi dikirim akan dikembalikan untuk melakukan perubahan.
6. Setelah di rollback, rubah junlah karakter pada field lokasi_lab dari 100 menjadi 50. Setelah diubah seperti biasa migrate dan liat hasilnya di database
7. Jika berhasil maka di dalam database, field lokasi_lab akan berubah
8. Untuk penambahan field nama_walkel, kita bisa ikuti cara di atas yang menambahkan lokasi ruangan. jadi disini saya akan menjelaskan saja, pertama kalian bikin dulu file migration add nama_walkel menggunakan perintah php artisan make:migration. Lalu ikuti kodingan di bawah ini
9. Setelah itu migrate seperti biasa,Lihat database kalian maka field nama_walkel akan bertambah di tabel t_kelas, untuk contoh bisa diliat di bawah ini
10. Untuk soal yang terakhir kita akan mengubah nama field nama_walkel menjadi nama_wali_kelas. Pertama buat dulu file migration nya seperti biasa dengan perintah "php artisan make:migration". setelah file dibuat ikuti kodingan di bawah ini dan masukan ke dalam file yang dibuat tadi
11. Jika sudah kalian migrate, maka field nama_walkel akan berubah menjadi nama_wali_kelas. Jika kalian benar maka di database kalian field nama_walkel sudah terganti. Untuk contoh ada di bawah ini
Mungkin cukup sekian materi mengenail Database Migration pada Laravel yang dapat saya sampaikan, semoga bermanfaat untuk teman teman semua. Mohon maaf jika ada kesalahan penulisan. Wassalamualaikum wr wb
0 Comments