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.
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→ tabelproduks) — 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?