Saya mohon maaf, sepertinya ada kesalahan dalam permintaan saya sebelumnya. Berikut adalah artikel yang benar mengenai Tutorial Laravel #19 : Migration Laravel:
Dalam pengembangan aplikasi web dengan Laravel, Migration adalah fitur yang sangat berguna untuk mengelola struktur database secara terstruktur dan kolaboratif. Dengan migration, Anda dapat membuat, memodifikasi, dan menghapus tabel serta kolom database menggunakan kode PHP, yang kemudian dapat di-version control bersama dengan kode aplikasi Anda. Pada tutorial kali ini, kita akan membahas dasar-dasar penggunaan migration di Laravel.
Apa Itu Migration?
Migration dalam Laravel adalah seperti version control untuk database Anda. Alih-alih mengelola perubahan skema database secara manual melalui SQL, Anda mendefinisikan perubahan tersebut dalam file PHP (disebut file migration). Laravel kemudian dapat menjalankan migration ini untuk memodifikasi struktur database Anda, dan juga dapat melakukan rollback jika diperlukan.
Keuntungan Menggunakan Migration
- Version Control: File migration dapat disimpan di sistem version control (seperti Git), sehingga setiap perubahan pada database dapat dilacak.
- Kolaborasi Tim: Memudahkan tim pengembang untuk menyinkronkan struktur database.
- Deployment: Mempermudah proses deployment aplikasi ke lingkungan baru, karena struktur database dapat dibuat secara otomatis.
- Rollback: Memungkinkan untuk mengembalikan perubahan database ke versi sebelumnya jika terjadi kesalahan.
Membuat Migration Baru
Untuk membuat file migration baru, Anda dapat menggunakan Artisan CLI:
“`bash
php artisan make:migration create_mahasiswa_table –create=mahasiswa
“`
Perintah di atas akan membuat file migration baru di dalam direktori database/migrations/ dengan nama yang mengandung timestamp dan deskripsi (create_mahasiswa_table). Opsi --create=mahasiswa mengindikasikan bahwa migration ini akan membuat tabel baru bernama mahasiswa.
Jika Anda ingin membuat migration untuk memodifikasi tabel yang sudah ada, gunakan perintah berikut (tanpa opsi --create):
“`bash
php artisan make:migration add_jurusan_to_users_table –table=users
“`
Ini akan membuat file migration untuk memodifikasi tabel users (dalam contoh ini, untuk menambahkan kolom jurusan).
Struktur File Migration
Setiap file migration berisi dua method penting:
up(): Method ini berisi kode yang akan dijalankan ketika migration dijalankan (misalnya, membuat tabel, menambahkan kolom).down(): Method ini berisi kode yang akan dijalankan ketika migration di-rollback (misalnya, menghapus tabel, menghapus kolom).
Contoh isi file migration create_mahasiswa_table:
“`php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateMahasiswaTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create(‘mahasiswa’, function (Blueprint $table) {
$table->id(); // Membuat kolom auto-incrementing UNSIGNED BIGINT (primary key) bernama ‘id’
$table->string(‘nama’);
$table->string(‘nim’)->unique();
$table->string(‘jurusan’);
$table->timestamps(); // Membuat kolom ‘created_at’ dan ‘updated_at’
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('mahasiswa');
}
}
“`
Contoh isi file migration add_jurusan_to_users_table:
“`php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddJurusanToUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table(‘users’, function (Blueprint $table) {
$table->string(‘jurusan’)->nullable()->after(’email’);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('jurusan');
});
}
}
“`
Di dalam method up() dan down(), Anda menggunakan Schema Builder Laravel untuk mendefinisikan operasi database. Beberapa contoh operasi yang sering digunakan:
Schema::create('nama_tabel', function (Blueprint $table) { ... });: Membuat tabel baru.Schema::table('nama_tabel', function (Blueprint $table) { ... });: Memodifikasi tabel yang sudah ada.$table->addColumn('tipe_data', 'nama_kolom')->...: Menambahkan kolom baru.$table->string('nama_kolom', panjang)->...: Menambahkan kolom string.$table->integer('nama_kolom')->...: Menambahkan kolom integer.$table->bigInteger('nama_kolom')->...: Menambahkan kolom big integer.$table->boolean('nama_kolom')->...: Menambahkan kolom boolean.$table->date('nama_kolom')->...: Menambahkan kolom tanggal.$table->timestamp('nama_kolom')->...: Menambahkan kolom timestamp.$table->timestamps(): Membuat kolomcreated_atdanupdated_at.$table->primary('nama_kolom'): Mendefinisikan primary key.$table->unique('nama_kolom'): Mendefinisikan indeks unik.$table->index('nama_kolom'): Mendefinisikan indeks biasa.$table->foreign('kolom_foreign')->references('kolom_utama')->on('tabel_utama'): Mendefinisikan foreign key.$table->dropColumn('nama_kolom'): Menghapus kolom.Schema::drop('nama_tabel'): Menghapus tabel (hati-hati!).Schema::dropIfExists('nama_tabel'): Menghapus tabel jika ada.
Anda dapat melihat daftar lengkap tipe kolom dan modifier di dokumentasi resmi Laravel.
Menjalankan Migration
Untuk menjalankan semua migration yang belum dijalankan, gunakan perintah Artisan:
“`bash
php artisan migrate
“`
Laravel akan menjalankan method up() dari setiap file migration yang belum pernah dieksekusi sebelumnya.
Melakukan Rollback Migration
Untuk membatalkan migration terakhir yang telah dijalankan, gunakan perintah:
“`bash
php artisan migrate:rollback
“`
Ini akan menjalankan method down() dari migration terakhir. Anda dapat menjalankan perintah ini beberapa kali untuk membatalkan beberapa migration terakhir.
Untuk me-reset seluruh database (menghapus semua tabel dan menjalankan semua migration dari awal), gunakan perintah:
“`bash
php artisan migrate:fresh
“`
Perhatian: Perintah migrate:fresh akan menghapus semua data di database Anda. Gunakan dengan hati-hati, terutama di lingkungan produksi.
Status Migration
Anda dapat melihat status migration (apakah sudah dijalankan atau belum) dengan perintah:
“`bash
php artisan migrate:status
“`
Kesimpulan
Laravel Migration adalah fitur yang sangat powerful untuk mengelola skema database aplikasi Anda. Dengan menggunakan migration, Anda dapat memastikan bahwa struktur database Anda selalu sinkron dengan kode aplikasi, memudahkan kolaborasi tim, dan mempermudah proses deployment serta rollback. Pada tutorial selanjutnya, kita akan membahas tentang Seeder di Laravel, yang berguna untuk mengisi database dengan data awal. Tetap ikuti seri tutorial Laravel ini!