Selama ini data catatan kita hardcode di controller — setiap kali server di-restart, data "hilang". Ini jelas tidak berguna untuk aplikasi nyata. Saatnya menyimpan data ke database.
Di part ini kita akan setup database SQLite (paling mudah untuk development), membuat tabel menggunakan Migration, dan memahami cara Laravel mengelola struktur database.
Apa itu Migration?
Migration adalah file PHP yang mendefinisikan struktur tabel database — kolom apa saja, tipe datanya, relasinya. Bayangkan migration seperti version control untuk database: setiap perubahan struktur tabel didokumentasikan sebagai file, bisa di-rollback, dan bisa dijalankan ulang di server manapun.
Tanpa migration: kirim SQL mentah ke teman → "eh tabel kamu beda sama punya aku" → pusing. Dengan migration: jalankan php artisan migrate → semua tabel langsung terbuat persis sama.
📋 Progress Belajarmu
① Setup Database SQLite
SQLite adalah database berbasis file — tidak perlu install MySQL/PostgreSQL, tidak perlu running server database terpisah. Sempurna untuk belajar dan development.
Buka file .env di root folder project. Cari bagian DB_ dan ubah menjadi:
DB_CONNECTION=sqlite
# Hapus atau comment baris DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD
Lalu buat file database SQLite-nya:
# Di terminal VS Code, dari folder project:
touch database/database.sqlite
# Windows (kalau touch tidak ada):
New-Item database/database.sqlite
DB_CONNECTION=mysql, DB_HOST=127.0.0.1, DB_PORT=3306, DB_DATABASE=nama_db, DB_USERNAME=root, DB_PASSWORD= — lalu buat database di phpMyAdmin atau Workbench.
② Jalankan Migration Bawaan
Laravel sudah menyertakan beberapa migration default (users, sessions, dll). Jalankan semuanya:
php artisan migrate
Output yang muncul:
INFO Running migrations.
2014_10_12_000000_create_users_table ................. 10ms DONE
2014_10_12_100000_create_password_reset_tokens_table . 5ms DONE
2024_01_01_000000_create_cache_table ................. 3ms DONE
2024_01_01_000001_create_jobs_table .................. 3ms DONE
Tabel-tabel tersebut sudah terbuat di database. Kamu bisa cek isinya dengan extension SQLite Viewer di VS Code (cari di Extensions panel).
③ Buat Migration Tabel Catatan
php artisan make:migration create_catatan_table
File baru terbuat di database/migrations/ dengan nama seperti 2026_04_23_000000_create_catatan_table.php. Buka file tersebut:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::create('catatan', function (Blueprint $table) {
$table->id();
$table->string('judul');
$table->text('isi');
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('catatan');
}
};
④ Memahami Schema Builder
Kolom-kolom yang tersedia:
| Method | Tipe Data SQL | Kegunaan |
|---|---|---|
$table->id() | BIGINT UNSIGNED AUTO_INCREMENT | Primary key (wajib ada) |
$table->string('nama') | VARCHAR(255) | Teks pendek (nama, judul, email) |
$table->text('konten') | TEXT | Teks panjang (artikel, deskripsi) |
$table->integer('umur') | INTEGER | Angka bulat |
$table->boolean('aktif') | TINYINT(1) | true/false |
$table->timestamp('tgl_lahir') | TIMESTAMP | Tanggal & waktu |
$table->timestamps() | created_at + updated_at | Otomatis diisi Laravel |
->nullable() | NULL diizinkan | Kolom boleh kosong |
->default('nilai') | DEFAULT | Nilai default kolom |
Update migration untuk menambah kolom user_id (untuk nanti saat ada fitur login):
Schema::create('catatan', function (Blueprint $table) {
$table->id();
$table->string('judul');
$table->text('isi');
$table->boolean('penting')->default(false); // tandai catatan penting
$table->timestamps();
});
⑤ Jalankan Migration
php artisan migrate
Tabel catatan terbuat. Kalau ada kesalahan dan mau mulai ulang:
# Rollback migration terakhir
php artisan migrate:rollback
# Rollback SEMUA dan jalankan ulang (hati-hati: data terhapus!)
php artisan migrate:fresh
Tambah Data Dummy dengan Tinker
Laravel punya tool interaktif bernama Tinker untuk bereksperimen langsung dengan database:
php artisan tinker
# Di dalam Tinker:
DB::table('catatan')->insert([
'judul' => 'Catatan pertama dari database!',
'isi' => 'Ini disimpan beneran di SQLite.',
'penting' => true,
'created_at' => now(),
'updated_at' => now(),
]);
# Cek isinya:
DB::table('catatan')->get();
# Keluar dari Tinker:
exit
Langkah Selanjutnya
Database sudah siap, tabel sudah ada, data dummy sudah masuk. Di Part 4 — Eloquent ORM, kita akan membuat Model dan belajar cara mengambil, menyimpan, mengupdate, dan menghapus data dengan cara yang jauh lebih elegan dari raw SQL.
Komentar 0