Cara Membuat Migration Database Sistem Manajemen Aset di Laravel (Categories & Assets)
Pada project Sistem Manajemen Aset menggunakan Laravel, salah satu langkah penting adalah membuat struktur database menggunakan migration. Migration di Laravel berfungsi seperti “riwayat perubahan database” yang bisa dijalankan ulang kapan saja. Jadi kita tidak perlu membuat tabel manual lewat phpMyAdmin, cukup lewat perintah Laravel saja.
Pada tutorial ini kita akan membuat migration untuk tabel:
users(untuk login)categories(kategori aset)assets(data aset)
1) Persiapan Project dan Database
Pastikan kamu sudah berada di folder project Laravel.
(Opsional) Jalankan server Laravel:
php artisan serve
Pastikan file .env sudah benar untuk koneksi database:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=asset_db
DB_USERNAME=root
DB_PASSWORD=
Catatan: Buat dulu database bernama asset_db di phpMyAdmin.
2) Migration Tabel users (Untuk Login)
Jika kamu menggunakan scaffolding login (php artisan ui bootstrap --auth), Laravel biasanya sudah menyiapkan migration untuk tabel users.
Untuk membuat tabel bawaan Laravel (termasuk users), jalankan:
php artisan migrate
Jika tabel users sudah ada, lanjut ke tabel categories dan assets.
3) Membuat Migration Tabel categories
Langkah A: Buat Model + Migration
Gunakan perintah berikut:
php artisan make:model Category -m
Perintah ini akan membuat:
- Model:
app/Models/Category.php - Migration:
database/migrations/xxxx_create_categories_table.php
Langkah B: Isi Migration categories
Buka file migration create_categories_table.php, lalu isi bagian up() seperti ini:
public function up(): void
{
Schema::create('categories', function (Blueprint $table) {
$table->id(); // id (PK)
$table->string('name'); // name
$table->timestamps(); // created_at & updated_at
});
}
4) Membuat Migration Tabel assets
Langkah A: Buat Model + Migration
Jalankan perintah berikut:
php artisan make:model Asset -m
Langkah B: Isi Migration assets
Buka file create_assets_table.php, lalu isi bagian up() seperti ini:
public function up(): void
{
Schema::create('assets', function (Blueprint $table) {
$table->id(); // id (PK)
$table->string('asset_code')->unique(); // asset_code unik
$table->string('name'); // name
// Foreign key ke categories
$table->foreignId('category_id')
->constrained('categories')
->cascadeOnUpdate()
->restrictOnDelete();
$table->string('location'); // location
// condition: baik / rusak ringan / rusak berat
$table->enum('condition', ['baik', 'rusak ringan', 'rusak berat'])
->default('baik');
// status: aktif / dipinjam / rusak / dihapuskan
$table->enum('status', ['aktif', 'dipinjam', 'rusak', 'dihapuskan'])
->default('aktif');
$table->date('purchase_date'); // tanggal beli
$table->text('notes')->nullable(); // catatan opsional
$table->timestamps();
});
}
Penjelasan singkat (untuk pemula):
unique()→ membuatasset_codetidak boleh samaforeignId()->constrained()→ membuat relasi FK otomatisenum()→ membatasi pilihan nilai agar data rapinullable()→ kolom boleh kosong
5) Jalankan Migration
Jika semua migration sudah siap, jalankan perintah:
php artisan migrate
Jika berhasil, tabel categories dan assets akan dibuat di database. Kamu bisa mengecek hasilnya di phpMyAdmin.
6) Jika Migration Error (Solusi Cepat)
Kalau kamu salah edit migration dan ingin ulang dari awal (khusus project latihan), gunakan:
php artisan migrate:fresh
Peringatan: Perintah ini menghapus semua tabel dan membuat ulang dari awal. Jangan digunakan di project yang sudah berisi data penting.
