Skip to content

Day 6 — Setup Database & Migration

Fase: 1 — Fundamental Laravel | Minggu: 2 | Hari: Senin


🎯 Tujuan Hari Ini

Peserta mampu menghubungkan Laravel ke PostgreSQL, memahami konsep Migration sebagai "blueprint" tabel, dan membuat tabel pertama di database.


📋 Task Wajib

1. Standup Pagi (09:00 – 09:15)

Gunakan format standar:

1. Yang saya kerjakan kemarin (minggu lalu)?
2. Yang akan saya kerjakan hari ini?
3. Ada blocker?

2. Aktifkan PostgresQL via XAMPP / Laragon

  • Buka XAMPP Control Panel → Start Apache dan PostgresQL
  • Buka browser → akses http://localhost/phpmyadmin
  • Buat database baru bernama: magang_crud_student

3. Konfigurasi File .env

Buka file .env di root project Laravel. Cari bagian DB_* dan sesuaikan:

ini
DB_CONNECTION=PostgreSQL
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=magang_crud_student
DB_USERNAME=root
DB_PASSWORD=

⚠️ Password default XAMPP biasanya kosong. Laragon biasanya root.

Setelah mengubah .env, selalu jalankan:

bash
php artisan config:clear

4. Apa Itu Migration?

Migration adalah file PHP yang mendefinisikan struktur tabel database. Kelebihannya dibanding import SQL manual:

MigrationImport SQL Manual
Disimpan di Git, bisa di-version controlFile .sql susah di-version control
Bisa di-rollback (php artisan migrate:rollback)Tidak bisa otomatis
Bisa dijalankan ulang di team member lainHarus share file manual
Mudah dimodifikasi lewat kodeHarus edit di phpMyAdmin

5. Buat Migration Tabel students

Jalankan perintah:

bash
php artisan make:migration create_students_table

Buka file yang terbuat di database/migrations/xxxx_create_students_table.php. Isi method up():

php
public function up(): void
{
    Schema::create('students', function (Blueprint $table) {
        $table->id();                                    // ID auto increment
        $table->string('name', 100);                     // Nama siswa
        $table->enum('gender', ['L', 'P']);              // Jenis kelamin
        $table->string('phone', 15)->nullable();         // No. HP (boleh kosong)
        $table->string('school', 150);                   // Nama sekolah
        $table->boolean('active')->default(true);        // Status aktif
        $table->timestamps();                            // created_at & updated_at
    });
}

6. Jalankan Migration

bash
php artisan migrate

Output yang diharapkan:

INFO  Running migrations.
2024_xx_xx_xxxxxx_create_students_table ........ 10ms DONE

Cek di phpMyAdmin → database magang_crud_student → tabel students sudah terbuat dengan kolom yang benar.

7. Eksperimen: Rollback & Migrate Ulang

Coba jalankan:

bash
php artisan migrate:rollback    # Hapus tabel yang baru dibuat
php artisan migrate              # Buat ulang tabel

Lihat perubahannya di phpMyAdmin.

8. Tambahkan Data Manual via phpMyAdmin

Buka tabel students di phpMyAdmin dan tambahkan 3 baris data secara manual (klik tab "Insert"). Isi:

  • Budi Santoso, L, 082100001111, SMK Negeri 1, active=1
  • Sari Dewi, P, 082200002222, SMK Negeri 3, active=1
  • Riko Pratama, L, (kosong), SMK Negeri 7, active=0

📝 Laporan ke Mentor

📌 LAPORAN HARIAN — Day 6
Nama     : [Nama Lengkap]
Role     : [Role Kamu]

✅ Yang saya kerjakan hari ini:
- [ ] Berhasil konfigurasi .env dan terhubung ke PostgreSQL
- [ ] Membuat migration tabel students
- [ ] Berhasil php artisan migrate
- [ ] Berhasil rollback dan migrate ulang
- [ ] Menambahkan 3 data manual di phpMyAdmin

📸 Screenshot Wajib:
1. phpMyAdmin menampilkan tabel students dengan struktur kolom yang benar
2. phpMyAdmin menampilkan 3 baris data yang sudah diisi
3. Terminal output dari php artisan migrate

🧠 Apa yang saya pelajari hari ini:
[Jelaskan dengan kata-katamu: apa keuntungan migration dibanding import SQL manual?]

❓ Kendala:
[Tulis jika ada]

⚠️ Yang Sering Error di Day 6

  • SQLSTATE[HY000]: Access denied → Username/Password DB salah di .env. Coba root dengan password kosong.
  • php artisan config:clear tidak membantu → Coba php artisan cache:clear juga.
  • Migration berhasil tapi tabel tidak muncul → Cek apakah phpMyAdmin refresh sudah dilakukan. Kadang perlu refresh manual.

Catatan Mentor

Pastikan semua laptop anggota tim bisa connect ke PostgreSQL sebelum lanjut ke Day 7. Ini adalah fondasi yang sangat kritikal. Jangan biarkan ada yang tertinggal.

Program Magang SMK RPL — Rekayasa Perangkat Lunak