Menu docs

Catatan Belajar · · 2 menit baca

Belajar Laravel: instalasi sampai CRUD pertama

Tutorial Laravel dari nol: instalasi via Composer, route + Blade, migration + Eloquent, validasi server, dan alur kerja artisan harian — sampai CRUD produk pertamamu jalan.

LaravelPHPEloquentBlade

Laravel adalah cara tercepat membangun aplikasi web full-stack di PHP — routing, database, auth, dan templating sudah tersedia dengan konvensi yang jelas. Tutorial ini membawamu dari instalasi sampai CRUD pertama.

1. Instalasi

Prasyarat: PHP 8.2+ dan Composer. Cek dulu:

php -v && composer -V

Buat project baru lalu jalankan:

composer create-project laravel/laravel toko-app
cd toko-app
php artisan serve        # buka http://localhost:8000

Secara default Laravel modern memakai SQLite (database/database.sqlite) — nol konfigurasi, langsung bisa migrasi. Ganti ke MySQL/Postgres nanti lewat .env saat butuh.

2. Route + view pertama

// routes/web.php
use Illuminate\Support\Facades\Route;

Route::get('/produk', function () {
    $produk = [
        ['nama' => 'Kopi Gayo', 'harga' => 85000],
        ['nama' => 'Kopi Toraja', 'harga' => 95000],
    ];
    return view('produk.index', ['produk' => $produk]);
});
{{-- resources/views/produk/index.blade.php --}}
<h1>Daftar Produk</h1>
<ul>
  @foreach ($produk as $p)
    <li>{{ $p['nama'] }} — Rp {{ number_format($p['harga'], 0, ',', '.') }}</li>
  @endforeach
</ul>

Blade meng-escape {{ }} otomatis — aman dari XSS tanpa usaha ekstra.

3. Database: migration + Eloquent

Satu perintah membuat model, migration, dan controller sekaligus:

php artisan make:model Produk -mrc
// database/migrations/xxxx_create_produks_table.php
public function up(): void
{
    Schema::create('produks', function (Blueprint $table) {
        $table->id();
        $table->string('nama');
        $table->unsignedInteger('harga');
        $table->timestamps();
    });
}
php artisan migrate

Lalu CRUD terasa seperti bahasa manusia:

// app/Http/Controllers/ProdukController.php
public function index()
{
    return view('produk.index', ['produk' => Produk::latest()->get()]);
}

public function store(Request $request)
{
    $data = $request->validate([
        'nama'  => 'required|string|max:100',
        'harga' => 'required|integer|min:0',
    ]);
    Produk::create($data);          // tambahkan $fillable di model
    return redirect('/produk');
}

Daftarkan sebagai resource route: Route::resource('produk', ProdukController::class);

4. Alur kerja harian

  • php artisan migrate:fresh --seed — reset database + isi data contoh saat development.
  • php artisan tinker — REPL untuk mencoba query Eloquent langsung.
  • php artisan route:list — lihat semua route yang terdaftar.

Tips dari pengalaman

  • Validasi selalu di server (seperti contoh $request->validate()) — jangan pernah percaya input dari browser.
  • Ikuti konvensi penamaan Laravel (model Produk → tabel produks) — melawan konvensi = melawan framework.
  • Untuk klienku yang hosting-nya sudah PHP, Laravel sering jadi pilihan paling pragmatis — deploy-nya sederhana dan developer PHP mudah dicari. Framework terbaik adalah yang bisa dirawat timnya.

Mau fitur seperti ini dibangun untuk bisnismu?