Panduan Lengkap Membuat Laravel Migration (Database)

Robbyn Rahmadaru
4 min readFeb 27, 2023

--

Panduan Lengkap Membuat Laravel Migration

Jika kamu baru memulai dengan Laravel, kamu mungkin akan bertanya-tanya apa itu migrasi dan bagaimana cara membuat migrasi di Laravel. Pada dasarnya, migrasi adalah cara untuk mengatur skema database kamu secara programatik, dan Laravel membuatnya sangat mudah untuk dilakukan.

Dalam artikel ini, kami akan membahas langkah-langkah detail tentang cara membuat migrasi di Laravel, mulai dari definisi tabel hingga penambahan indeks dan kunci asing. Jadi, mari kita mulai!

Definisi Tabel

Pertama-tama, mari kita lihat bagaimana kamu bisa mendefinisikan tabel menggunakan migrasi di Laravel. Setiap migrasi memiliki metode up() dan down() yang digunakan untuk menentukan tindakan yang akan dilakukan ketika migrasi dijalankan atau di-rollback. Untuk membuat tabel, kita akan menggunakan metode up() dan metode Schema::create().

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateUsersTable extends Migration
{
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}

public function down()
{
Schema::dropIfExists('users');
}
}

Kode di atas akan membuat tabel users dengan kolom-kolom yang ditentukan. Kolom id() adalah kolom kunci utama yang dihasilkan oleh Laravel secara otomatis. Kolom timestamps() akan menambahkan kolom created_at dan updated_at secara otomatis.

Menambah Kolom

Jika kamu perlu menambahkan kolom ke tabel yang sudah ada, kamu bisa menggunakan metode Schema::table().

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class AddAgeToUsersTable extends Migration
{
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->integer('age');
});
}

public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('age');
});
}
}

Kode di atas akan menambahkan kolom age ke tabel users. Metode down() akan menghapus kolom age dari tabel jika migrasi di-rollback.

Menghapus Kolom

Jika kamu perlu menghapus kolom dari tabel, kamu bisa menggunakan metode dropColumn().

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class RemoveAgeFromUsersTable extends Migration
{
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('age');
});
}

public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->integer('age');
});
}
}

Kode di atas akan menghapus kolom age dari tabel users. Metode down() akan menambahkan kolom age ke tabel jika migrasi di-rollback.

Mengubah Kolom

Jika kamu perlu mengubah tipe data kolom yang sudah didefinisikan, kamu bisa menggunakan metode change().

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class ChangeEmailColumnInUsersTable extends Migration
{
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('email', 100)->change();
});
}

public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->string('email')->change();
});
}
}

Kode di atas akan mengubah tipe data kolom email menjadi string(100). Metode down() akan mengubah kembali tipe data kolom email ke string.

Menambah Indeks

Jika kamu perlu menambahkan indeks ke kolom pada tabel, kamu bisa menggunakan metode index().

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class AddIndexToUsersTable extends Migration
{
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->index('email');
});
}

public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropIndex('users_email_index');
});
}
}

Kode di atas akan menambahkan indeks pada kolom email pada tabel users. Metode down() akan menghapus indeks dari kolom email.

Menambah Kunci Asing (Foregin Key)

Jika Anda perlu menambahkan kunci asing ke tabel, kamu bisa menggunakan metode foreign().

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class AddForeignKeyToPostsTable extends Migration
{
public function up()
{
Schema::table('posts', function (Blueprint $table) {
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users');
});
}

public function down()
{
Schema::table('posts', function (Blueprint $table) {
$table->dropForeign(['user_id']);
$table->dropColumn('user_id');
});
}
}

Kode di atas akan menambahkan kunci asing pada kolom user_id pada tabel posts yang merujuk pada kolom id pada tabel users. Metode down() akan menghapus kunci asing dan kolom user_id dari tabel posts.

Menjalankan Migrasi

Setelah migrasi kamu sudah ditulis, kamu bisa menjalankannya dengan menggunakan perintah php artisan migrate.

php artisan migrate

Perintah tersebut akan menjalankan semua migrasi yang belum dijalankan di dalam aplikasi Laravel.

Jika kamu perlu me-rollback migrasi terakhir, Anda dapat menggunakan perintah php artisan migrate:rollback.

php artisan migrate:rollback

Perintah tersebut akan mengembalikan migrasi terakhir yang dijalankan. Jika kamu perlu mengembalikan lebih dari satu migrasi, kamu bisa menggunakan perintah php artisan migrate:rollback --step=2, dengan nilai step sesuai dengan jumlah migrasi yang perlu di-rollback.

Kesimpulan

Migrasi adalah cara yang sangat berguna untuk mengatur skema database kamu secara programatik. Dalam artikel ini, kita telah membahas langkah-langkah detail tentang cara membuat migrasi di Laravel, mulai dari definisi tabel hingga penambahan indeks dan kunci asing. kita juga membahas cara menjalankan dan melakukan rollback pada migrasi.

Dengan menggunakan migrasi, kamu bisa membuat dan mengelola skema database Anda dengan mudah, dan menghindari kesalahan saat menulis kueri SQL secara manual. Jadi, pastikan untuk memanfaatkan fitur ini dalam pengembangan aplikasi Laravel mu.

--

--

Robbyn Rahmadaru
Robbyn Rahmadaru

Written by Robbyn Rahmadaru

Your life is a message to the World. Make sure it's inspiring.

No responses yet