Web Development May 21, 2026 · 6 min read · 0 dilihat

Belajar Laravel 13 #6: Database, Migration & Eloquent ORM

Sampai episode ini, kamu sudah memahami konsep MVC dan struktur folder Laravel. Sekarang saatnya berinteraksi dengan database — tempat aplikasi kamu menyimpan dan mengambil data. Jangan khawatir soal SQL; Laravel punya Eloquent ORM yang "ajaib", memungkinkan kamu query database pakai kode PHP natural, bukan raw SQL. Di seri #6 ini, kita akan setup koneksi database, membuat struktur tabel via Migration (yang bisa di-version control), dan melakukan CRUD dengan Eloquent. Semua dimulai dari studi kasus konkret: membuat tabel "posts" dan mengisinya dengan data. Setelah selesai, kamu akan memahami mengapa Eloquent disebut salah satu superpower Laravel.

IKHSAN MAULANA

IKHSAN MAULANA

Web, Android, and RPA Development

Belajar Laravel 13 #6: Database, Migration & Eloquent ORM

Pada episode sebelumnya tentang Controller dan MVC Laravel 13, kita memahami bagaimana request mengalir melalui route → controller → view. Namun controller kami hanya mengembalikan data dummy (hardcoded). Kini kita tambah layer terakhir: database — tempat data nyata disimpan dan diambil aplikasi.

Laravel menyediakan dua fitur utama untuk bekerja dengan database: Migration (untuk membuat dan mengelola struktur tabel) dan Eloquent ORM (untuk berinteraksi dengan data via kode PHP). Kombinasi keduanya membuat developer tidak perlu lagi menulis raw SQL manual.

Setup Koneksi Database di .env

Langkah pertama adalah memberi tahu Laravel di mana database kamu berada. File konfigurasi utama ada di .env (environment file) di root project.

Buka file .env kamu. Cari baris berikut:

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

Sesuaikan dengan setup MySQL lokal kamu. Misalnya, jika kamu menggunakan MySQL default di localhost dengan user root tanpa password, biarkan seperti itu. Jika ingin nama database berbeda, ubah DB_DATABASE menjadi nama yang kamu inginkan (misal: laravel_blog).

Tips: Pastikan MySQL server sudah running sebelum melanjutkan. Di Windows, start "MySQL80" dari Services; di Mac/Linux, cek status dengan sudo systemctl status mysql.

Apa Itu Migration? Versi Kontrol untuk Database

Bayangkan kamu bekerja dalam tim, dan rekan kerja menambah kolom baru di tabel. Biasanya kamu perlu manual menjalankan ALTER TABLE di komputer kamu. Repot, kan? Laravel menyediakan solusi: Migration.

Migration adalah file PHP yang berisi instruksi membuat, mengubah, atau menghapus tabel database. File-file ini bisa disimpan di repository Git bersama kode, sehingga rekan kerja bisa menjalankan semua migration dengan satu perintah, dan struktur database mereka otomatis sama.

Keuntungan Migration:

  • Version Control: Setiap perubahan database tercatat di Git seperti kode biasa
  • Kolaborasi: Tim bisa sync struktur database instant
  • Rollback: Bisa batalkan perubahan database jika terjadi kesalahan
  • Environment Konsisten: Development, staging, dan production punya struktur sama

Membuat & Menjalankan Migration

Mari buat migration untuk tabel "posts". Buka terminal di folder project Laravel kamu, lalu jalankan:

php artisan make:migration create_posts_table

Perintah artisan ini membuat file baru di folder database/migrations/ dengan nama seperti 2024_01_15_120000_create_posts_table.php (timestamp otomatis). 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('posts', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->text('content');
            $table->timestamps();
        });
    }

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

Di sini kita mendefinisikan struktur tabel posts dengan kolom:

  • id() – Primary key, auto increment
  • title – String (varchar), untuk judul post
  • content – Text, untuk isi post
  • timestamps() – Otomatis nambah kolom created_at dan updated_at

Method up() menjalankan saat migration dijalankan; method down() menjalankan saat rollback (batalkan migration).

Sekarang jalankan migration dengan perintah:

php artisan migrate

Laravel akan membuat database (jika belum ada) dan menjalankan semua file migration. Cek phpMyAdmin atau MySQL CLI — tabel "posts" seharusnya sudah ada. Sukses! Kamu baru saja membuat struktur database pakai kode, tanpa perintah SQL manual.

Apa Itu Eloquent ORM? SQL dalam Kode PHP

ORM singkatan dari Object-Relational Mapping. Konsepnya sederhana: setiap tabel database dipresentasikan sebagai class PHP (disebut Model). Setiap row di tabel jadi instance dari class itu.

Eloquent adalah ORM bawaan Laravel yang powerful. Dengan Eloquent, kamu query database pakai syntax PHP natural, tanpa nulis SQL:

  • Post::all() – Ambil semua posts (SELECT * FROM posts)
  • Post::find(1) – Ambil post dengan id=1 (SELECT * FROM posts WHERE id=1)
  • Post::create(['title' => 'Halo', 'content' => 'Isi']) – Insert data baru
  • $post->delete() – Hapus post

Keindahan Eloquent: kode kamu tetap readable, dan Laravel otomatis mengkonversi ke SQL yang tepat di belakang layar. Bahkan relationship antar tabel (foreign key) jadi sesimple method call.

CRUD Dasar dengan Eloquent

CRUD = Create, Read, Update, Delete — operasi dasar database. Mari lihat contoh konkret di controller. Asumsikan sudah punya route dan model (kita buat di step berikutnya). Di controller, operasinya terlihat seperti ini:

<?php

namespace App\Http\Controllers;

use App\Models\Post;
use Illuminate\Http\Request;

class PostController extends Controller
{
    // READ: Ambil semua posts
    public function index()
    {
        $posts = Post::all();
        return view('posts.index', compact('posts'));
    }

    // CREATE: Simpan post baru
    public function store(Request $request)
    {
        Post::create([
            'title' => $request->title,
            'content' => $request->content,
        ]);
        return redirect('/posts');
    }

    // READ: Ambil satu post berdasarkan ID
    public function show($id)
    {
        $post = Post::find($id);
        return view('posts.show', compact('post'));
    }

    // UPDATE: Ubah post
    public function update(Request $request, $id)
    {
        $post = Post::find($id);
        $post->update([
            'title' => $request->title,
            'content' => $request->content,
        ]);
        return redirect('/posts');
    }

    // DELETE: Hapus post
    public function destroy($id)
    {
        Post::find($id)->delete();
        return redirect('/posts');
    }
}

Lihat betapa sederhana? Tidak ada raw SQL sama sekali. Eloquent menangani semuanya. Method seperti all(), find(), create(), update(), delete() adalah bagian dari BaseModel Eloquent yang otomatis tersedia di setiap Model kamu.

Latihan: Buat Model Post dan Isi Data

Sekarang mari praktik. Pertama, buat Model untuk tabel posts. Di terminal, jalankan:

php artisan make:model Post

Ini membuat file app/Models/Post.php. Buka dan lihat isinya:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    protected $fillable = ['title', 'content'];
}

Property $fillable menentukan kolom mana saja yang boleh di-assign mass assignment (saat pakai create() atau update()). Ini keamanan: jika ada kolom sensitif seperti is_admin, jangan masukkan di $fillable.

Sekarang, mari test CRUD dari Tinker (REPL bawaan Laravel). Buka terminal:

php artisan tinker

Sekarang kamu di shell interaktif Laravel. Mari buat post pertama:

>>> Post::create(['title' => 'Pertama Kali Belajar Laravel', 'content' => 'Saya baru belajar Eloquent ORM hari ini!'])

Enter. Eloquent akan insert data ke tabel posts dan mengembalikan instance Post dengan id=1. Sekarang ambil semua posts:

>>> Post::all()

Seharusnya muncul array dengan post yang baru dibuat. Coba cari berdasarkan id:

>>> $post = Post::find(1)
>>> $post->title

Keluar dari Tinker dengan exit.

Itu dia! Kamu baru saja melakukan CRUD tanpa menulis satu baris SQL pun. Semua handled oleh Eloquent ORM. Bayangkan saat tabel punya 20 kolom dan relasi kompleks — Eloquent tetap membuat kode kamu clean dan natural.

Selanjutnya: Relationship dan Query Lanjutan

Setelah mahir CRUD dasar, topik next adalah Relationship (one-to-many, many-to-many) dan Query Builder advanced (where, orderBy, limit, join). Tapi untuk episode kali ini, fokus adalah memahami fondasi: migration dan CRUD dasar.

Referensi lengkap untuk Eloquent bisa kamu baca di dokumentasi resmi Eloquent dan dokumentasi Migration.

Kesimpulan

Database adalah jantung aplikasi modern. Dengan Migration dan Eloquent ORM, Laravel menjadikan pekerjaan database developer jauh lebih nyaman. Kamu tidak perlu lagi menulis SQL manual atau mengkhawatirkan sinkronisasi struktur database antar environment — semuanya ada di kode, bisa di-commit ke Git, dan dijalankan dengan satu command.

Sekarang kamu sudah punya fondasi solid: route (episode #3), view (episode #4), controller (episode #5), dan database (episode #6). Aplikasi kamu kini bisa menerima request, query database, dan merender data dinamis. Di episode berikutnya, kita akan menghubungkan semuanya dalam satu flow utuh dan explore fitur-fitur lanjutan Laravel. Keep coding! 🚀

Tags:

#Database #Laravel 13 #Web Development #Migration #Eloquent ORM

Share this article:

IKHSAN MAULANA

Tentang Penulis

IKHSAN MAULANA

Web, Android, and RPA Development

I am an experienced IT programmer specializing in Web Development (Laravel/PHP), Android (Dart/Flutter), and RPA (UiPath). I love building clean, efficient solutions that solve real-world problems. With 4+ years of hands...

Download CV

Sebelum download, boleh kenalan dulu? Form ini opsional — kosongin juga gak apa-apa, langsung klik Download.