Web Development May 02, 2026 · 4 min read · 1 dilihat

Belajar Laravel 13 #4: Database, Migration, dan Eloquent Model

Sekarang kita masuk ke bagian yang seru: menyimpan data ke database. Jangan khawatir kalau kamu belum pernah nulis SQL, karena Laravel punya fitur bernama Migration dan Eloquent yang bakal bikin segalanya terasa mudah dan natural. Di episode ini, kita akan setup koneksi database, membuat tabel dengan migration, mengenal Eloquent Model, dan langsung testing data pake Tinker. Semuanya step-by-step tanpa harus menghafal query SQL manual.

Belajar Laravel 13 #4: Database, Migration, dan Eloquent Model

Sekarang kita masuk ke bagian yang paling seru dalam development: berinteraksi dengan database. Jangan panik kalau kamu belum pernah menulis SQL, karena Laravel punya sistem yang ramah untuk pemula bernama Migration dan Eloquent ORM.

Dalam episode ini, kita akan setup koneksi database, membuat tabel pertama kamu dengan migration, mengenal Eloquent Model, dan langsung testing data tanpa perlu membuat form dulu. Mari kita mulai!

Step 1: Setup Koneksi Database

Buka file .env di root project kamu. Di bagian database, kamu akan melihat konfigurasi seperti ini:

DB_CONNECTION=sqlite
DB_DATABASE=database.sqlite

Untuk tahap belajar, kita bisa pakai SQLite (lebih simple, tidak perlu install MySQL server terpisah) atau MySQL kalau kamu sudah familiar. Kalau pakai SQLite, file database otomatis jadi di folder database/. Kalau pakai MySQL, ubah konfigurasinya jadi:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_belajar
DB_USERNAME=root
DB_PASSWORD=

Sesuaikan dengan setup MySQL kamu. Kalau pakai SQLite, biarkan saja default-nya.

Step 2: Membuat Migration Pertama

Migration adalah file yang berisi blueprint tabel database kamu. Dengan migration, kamu tidak perlu buka phpMyAdmin dan nulis CREATE TABLE manual. Laravel sudah punya command untuk generate migration:

php artisan make:migration create_posts_table

Perintah di atas akan membuat file di folder database/migrations/ dengan nama timestamp dan "create_posts_table". Buka file itu dan kamu akan lihat struktur seperti ini:

public function up(): void
{
    Schema::create('posts', function (Blueprint $table) {
        $table->id();
        $table->timestamps();
    });
}

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

Sekarang kita tambahkan kolom-kolom yang kita butuh: title dan content:

public function up(): void
{
    Schema::create('posts', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->text('content');
        $table->timestamps();
    });
}

Mudah, kan? Kolom id sudah auto-increment sebagai primary key. Kolom timestamps() membuat dua kolom otomatis: created_at dan updated_at. Sekarang kita jalankan migration dengan command:

php artisan migrate

Jika berhasil, kamu akan lihat pesan bahwa tabel posts sudah dibuat. Buka database GUI kamu (phpMyAdmin kalau MySQL, atau TablePlus kalau SQLite) dan verifikasi tabel sudah ada beserta kolom-kolomnya.

Step 3: Membuat Eloquent Model

Model adalah representasi data di Laravel. Setiap tabel biasanya punya satu Model. Kita bisa generate Model dengan command:

php artisan make:model Post

File baru Post.php akan muncul di folder app/Models/. Struktur dasarnya:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    //
}

Wow, simple banget! Laravel sudah tahu bahwa Model Post itu berhubungan dengan tabel posts (plural, otomatis). Kamu tidak perlu konfigurasi tambahan untuk case dasar seperti ini.

Mengenal Eloquent: Query Database dengan Santai

Sekarang tiba giliran bagian yang paling powerful: Eloquent. Ini adalah ORM (Object-Relational Mapping) yang memungkinkan kamu query database dengan syntax yang natural, bukan SQL mentah.

  • Ambil semua data: Post::all() — mengembalikan collection semua posts
  • Cari satu data: Post::find(1) — mencari post dengan id = 1
  • Buat data baru: Post::create(['title' => 'Hello', 'content' => 'World']) — insert langsung
  • Update data: $post->update(['title' => 'Updated']) — ubah kolom tertentu
  • Hapus data: $post->delete() — delete dari database

Kita akan explore semua ini lebih dalam di episode CRUD (Create, Read, Update, Delete) nanti. Untuk sekarang, kita cukup tahu bahwa method-method ini ada dan powerful.

Step 4: Testing dengan Tinker

Tinker adalah interactive shell untuk Laravel. Dengan tinker, kita bisa test Eloquent query tanpa harus bikin form atau controller terlebih dahulu. Jalankan:

php artisan tinker

Kamu akan masuk ke mode interaktif. Sekarang coba buat data dummy:

>>> Post::create(['title' => 'First Post', 'content' => 'Halo dunia!'])
>>> Post::create(['title' => 'Second Post', 'content' => 'Laravel keren!'])

Setelah itu, coba ambil datanya:

>>> Post::all()
>>> Post::find(1)

Kamu akan lihat hasilnya langsung di terminal. Ini cara terbaik untuk eksperimen tanpa perlu bikin view atau form. Untuk keluar dari Tinker, ketik exit atau tekan Ctrl+D.

Tips Penting untuk Pemula

  • Jangan hafal semua command Artisan: Pakai php artisan list untuk lihat daftar command yang tersedia
  • Rollback migration: Kalau kamu salah membuat kolom, bisa jalankan php artisan migrate:rollback untuk "undo" dan coba lagi
  • Fresh migration: Di development, bisa pakai php artisan migrate:fresh untuk reset database dari awal
  • Fillable di Model: Untuk pakai ::create(), pastikan kolom yang mau di-fill ada di property $fillable di Model (akan kita bahas lebih dalam di episode CRUD)

Kesimpulan

Sekarang kamu sudah tahu cara setup database di Laravel, membuat tabel dengan migration, membuat Model Eloquent, dan testing data dengan Tinker. Ini adalah fondasi sebelum kita masuk ke episode CRUD di mana kita akan membuat form untuk insert, edit, delete data.

Di episode berikutnya, kita akan build feature lengkap untuk menampilkan, membuat, mengubah, dan menghapus posts. Kamu udah siap? Mari lanjut!

Tags:

#PHP #Tutorial #Database #Laravel 13 #Migration #Eloquent

Share this article: