Tutorial Laravel Lengkap dari Dasar sampai Mahir: Panduan Laravel untuk Pemula

tutorial laravel lengkap dari dasar sampai mahir. panduan paling lengkap untuk mempelajari framework PHP paling populer di Indonesia, mulai dari instalasi sampai deployment. update 2026 sudah mencakup Laravel 12 dan Laravel 13.
sebelum laravel, saya sempat berkutat lama dengan PHP murni dan sering nulis ulang kode yang sama untuk tiap project, sampai akhirnya pindah ke laravel dan baru sadar betapa banyak waktu yang terbuang. panduan ini saya tulis dari sudut pandang yang saya alami sendiri: apa yang dulu bikin saya bingung pas pertama belajar laravel, dan cara paling cepat melewatinya.
Apa itu Laravel?
laravel adalah framework PHP yang dirancang untuk pengembangan web modern. laravel nyediain struktur, fitur, dan alat yang dibutuhkan buat membangun aplikasi web yang andal dan skalabel.
laravel adalah framework PHP terpopuler di Indonesia dengan lebih dari 70.000 bintang di GitHub. framework ini pakai pola MVC (Model-View-Controller) dan nyediain fitur modern kayak routing, middleware, ORM (Eloquent), dan testing.
Daftar Isi Tutorial Laravel Lengkap
1. Pendahuluan & Instalasi
2. Arsitektur Laravel
3. Routing
4. Controller
5. Model & Eloquent ORM
6. Migration & Database
7. View & Blade Template
8. Middleware
9. Request & Validation
10. REST API
11. Testing
12. Queue & Job
13. Deployment
14. Livewire & Modern Features
15. Troubleshooting
1. Pendahuluan & Instalasi
laravel adalah framework PHP yang mengikuti pola MVC (Model-View-Controller). tujuannya bikin pengembangan web jadi menyenangkan, elegan, dan produktif. framework ini nyediain berbagai fitur built-in:
- Eloquent ORM: implementasi Active Record untuk database
- Routing: sistem routing yang fleksibel
- Middleware: filter HTTP request
- Migration: version control untuk skema database
- Blade Template: template engine yang sederhana
- Testing: testing suite bawaan
- Queue: pemrosesan job yang andal
- Event Broadcasting: fitur real-time
Cara Install Laravel Terbaru di Windows
berikut langkah instalasi laravel di windows yang biasa saya pakai, sudah saya sesuaikan untuk Laravel 12 dan 13:
- Cek versi PHP dulu
php -v, kalau masih di bawah 8.2 upgrade dulu. Laravel 12 butuh PHP 8.2 atau lebih, Laravel 13 butuh PHP 8.3 ke atas (8.3 sampai 8.5). di 2026, PHP 8.3 itu yang paling aman buat production. - Install Composer: download dari getcomposer.org
- Install Laravel Installer (opsional)
composer global require laravel/installer - Buat project baru
laravel new nama-project # atau pakai composer dengan versi spesifik composer create-project laravel/laravel nama-project # untuk Laravel 13 eksplisit composer create-project laravel/laravel:^13.0 nama-project
kalau proses
composer create-projectgagal di tengah jalan, hal yang sering saya alami, biasanya penyebabnya koneksi atau versi PHP yang kurang baru. solusinya: pastikan versi PHP sesuai (8.2 untuk Laravel 12, 8.3 untuk Laravel 13), lalu jalankan ulang perintah di atas, tidak perlu mengulang dari langkah 1.
untuk panduan lengkap langkah per langkah, baca cara install laravel terbaru di windows.
Laravel di XAMPP, WAMP, Laragon
laravel bisa dijalankan di:
- XAMPP: install composer di XAMPP
- Laragon: sudah termasuk composer, paling praktis buat windows
- Laravel Valet: untuk macOS
kalau kalian baru mulai, saya saranin laragon, instalasinya tinggal next-next beres, composer langsung kebawa.
2. Arsitektur Laravel
Pola MVC di Laravel
MVC (Model-View-Controller) itu pola arsitektur yang membagi aplikasi jadi tiga bagian:
- Model: urusan data dan logika bisnis
- View: urusan tampilan (UI)
- Controller: penghubung model dan view, ngolah request
alurnya gini: user request masuk ke route, route ngarahin ke controller, controller ngambil data dari model, lalu ngirim data ke view buat ditampilin.
Struktur Direktori Laravel
# Struktur Laravel 10 dan sebelumnya (masih banyak ditemui di tutorial lama)
app/
├── Http/
│ ├── Controllers/ # Controller
│ └── Middleware/ # Middleware
├── Models/ # Model (Eloquent)
├── Providers/ # Service Provider
bootstrap/
├── app.php # Application bootstrap (file, bukan folder)
config/ # Konfigurasi aplikasi
database/
├── migrations/ # Database migrations
├── seeders/ # Database seeders
└── factories/ # Model factories
public/ # Web root
resources/
├── views/ # Blade templates
├── js/ # JavaScript
└── css/ # Stylesheet
routes/
├── web.php # Web routes
├── api.php # API routes (sejak Laravel 11 tidak dibuat otomatis)
└── console.php # Console commands
jangan hafalin semua folder ini sekarang. yang paling sering kalian sentuh tiap hari cuma empat: routes/, app/Http/Controllers/, app/Models/, dan resources/views/. sisanya bakal kebawa sendiri seiring project jalan.
catatan untuk Laravel 11 dan 12: strukturnya lebih ramping.
app/Http/Kernel.phpdanapp/Console/Kernel.phpsudah tidak ada, semua middleware dan routing diatur dibootstrap/app.phpdengan sintaksApplication::configure()->withMiddleware()->withRouting(). folderconfig/danapp/Providersjuga tidak dipublish otomatis, cuma muncul kalau kalian butuh. jadi kalau kalian barularavel newdi 2026 dan kok tidak nemu Kernel.php, itu normal, bukan error.routes/api.phpjuga tidak ada secara default, jalankanphp artisan install:apibiar muncul.
3. Routing
Route Dasar
// routes/web.php
Route::get('/', function () {
return view('welcome');
});
Route::get('/hello', function () {
return 'Hello, World!';
});
route itu “alamat” aplikasi kalian. tiap baris Route::get artinya, kalau ada request GET ke URL tertentu, jalankan fungsi yang diberikan.
Route Parameter
// Parameter wajib
Route::get('/user/{id}', function ($id) {
return "User ID: $id";
});
// Parameter opsional
Route::get('/user/{id?}', function ($id = null) {
return "User ID: " . ($id ?? 'guest');
});
parameter ditulis dalam kurung kurawal, dan otomatis dikirim ke fungsi sebagai argumen. tambah tanda tanya ({id?}) buat bikin parameter opsional.
Named Route
// Definisikan named route
Route::get('/user/profile', function () {
return 'User Profile';
})->name('profile');
// Gunakan named route
$url = route('profile');
named route itu ngasih nama ke route, biar kalau URL-nya berubah, semua link tidak perlu diubah satu-satu, cukup pakai nama route-nya.
4. Controller
Membuat Controller
# Buat controller
php artisan make:controller UserController
// app/Http/Controllers/UserController.php
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function index()
{
$users = User::all();
return view('users.index', compact('users'));
}
public function store(Request $request)
{
$validated = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
]);
User::create($validated);
return redirect()->route('users.index');
}
}
controller itu tempat logika aplikasi tinggal. kebiasaan jelek yang harus dihindari: nulis logika langsung di route. route cukup ngarahin, logikanya di controller.
Resource Controller
# Buat resource controller
php artisan make:controller PhotoController --resource
// routes/web.php
Route::resource('photos', PhotoController::class);
perintah ini langsung ngegenerate tujuh method standar: index, create, store, show, edit, update, destroy. Route::resource otomatis mendaftarkan semua route-nya sekaligus.
untuk contoh nyata CRUD lengkap, baca tutorial laravel membuat REST API CRUD dengan JWT.
5. Model & Eloquent ORM
Apa itu Eloquent?
eloquent adalah implementasi Active Record yang disediakan laravel buat interaksi dengan database. dengan eloquent, tiap baris di tabel diwakili satu object model, dan operasi CRUD jadi jauh lebih singkat dibanding nulis query SQL manual.
Membuat Model
php artisan make:model User
// app/Models/User.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $fillable = ['name', 'email', 'password'];
// Relasi
public function posts()
{
return $this->hasMany(Post::class);
}
}
$fillable itu daftar kolom yang boleh diisi massal lewat User::create(). ini pengaman penting biar user tidak bisa nyuntik kolom yang tidak seharusnya, kayak is_admin.
Operasi CRUD dengan Eloquent
// Create
$user = User::create(['name' => 'John', 'email' => '[email protected]']);
// Read
$user = User::find(1);
$users = User::where('active', true)->get();
// Update
$user->update(['name' => 'Jane']);
// Delete
$user->delete();
CRUD dengan eloquent cuma empat baris konsep, jauh lebih enak daripada mysqli_query manual.
6. Migration & Database
Apa itu Migration?
migration itu version control untuk skema database. dengan migration, perubahan struktur tabel ditulis dalam kode, jadi bisa di-share ke tim dan di-rollback kalau salah. tanpa migration, tiap developer harus sinkron struktur database manual, itu sumber masalah klasik.
Membuat Migration
# Buat migration
php artisan make:migration create_users_table
// database/migrations/2024_01_01_000000_create_users_table.php
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
method up() jalan saat migrate, berisi definisi tabel. kalau mau rollback, tambah method down() yang isinya Schema::drop('users').
Menjalankan Migration
# Jalankan migration
php artisan migrate
# Rollback migration
php artisan migrate:rollback
migrate:rollback ngebatalin batch migration terakhir, bukan semua migration. buat balikin semuanya, pakai migrate:reset.
untuk panduan lengkapnya, baca cara migrate database laravel.
7. View & Blade Template
Apa itu Blade?
blade adalah template engine bawaan laravel. blade nyediain sintaks sederhana buat nampilin data, conditional, dan loop, tanpa ninggalin kenyamanan PHP.
Direktif Blade
{{-- Komentar --}}
{{-- Variable --}}
{{ $name }}
{{-- Conditional --}}
@if ($age >= 18)
<p>Dewasa</p>
@elseif ($age >= 13)
<p>Remaja</p>
@else
<p>Anak-anak</p>
@endif
{{-- Loop --}}
@foreach ($users as $user)
<p>{{ $user->name }}</p>
@endforeach
{{-- @forelse --}}
@forelse ($users as $user)
<p>{{ $user->name }}</p>
@empty
<p>Tidak ada pengguna</p>
@endforelse
{{ }} itu pengganti echo yang otomatis nge-escape HTML, aman dari XSS. @forelse itu @foreach plus blok @empty kalau datanya kosong, sering kepake buat nampilin pesan “tidak ada data”.
Template Inheritance
{{-- layouts/app.blade.php --}}
<html>
<head>
<title>@yield('title')</title>
</head>
<body>
@include('partials.navbar')
<div class="content">
@yield('content')
</div>
@include('partials.footer')
</body>
</html>
{{-- pages/home.blade.php --}}
@extends('layouts.app')
@section('title', 'Home')
@section('content')
<h1>Selamat datang!</h1>
@endsection
@extends ngewariisi layout, @section ngisi bagian yang didefinisikan @yield di layout. navbar dan footer cukup ditulis sekali, semua halaman otomatis kebawa.
8. Middleware
Apa itu Middleware?
middleware itu filter HTTP yang ngecek dan ngolah request sebelum sampai ke controller. posisinya di tengah, persis kayak satpam di depan gedung: dia bisa ngizinin request lanjut, atau nolak dan redirect duluan.
Membuat Middleware
php artisan make:middleware CheckAge
// app/Http/Middleware/CheckAge.php
public function handle($request, Closure $next)
{
if ($request->age < 18) {
return redirect('home');
}
return $next($request);
}
$next($request) artinya “loloskan request ke lapisan berikutnya”. kalau tidak dipanggil, request berhenti di middleware.
Register Middleware
untuk Laravel 10 dan sebelumnya, daftarnya di app/Http/Kernel.php:
// app/Http/Kernel.php (Laravel 10 ke bawah)
protected $routeMiddleware = [
'check.age' => \App\Http\Middleware\CheckAge::class,
];
// Gunakan di route
Route::get('/dashboard', function () {
// ...
})->middleware('check.age');
untuk Laravel 11 dan 12, Kernel sudah tidak ada. daftarnya di bootstrap/app.php:
// bootstrap/app.php (Laravel 11/12)
use Illuminate\Foundation\Configuration\Middleware;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(web: __DIR__.'/../routes/web.php')
->withMiddleware(function (Middleware $middleware) {
$middleware->alias([
'check.age' => \App\Http\Middleware\CheckAge::class,
]);
})
->create();
middleware harus didaftarkan dulu sebelum bisa dipakai. contoh paling umum: middleware auth buat ngeproteksi halaman yang butuh login. kalau kalian pakai Laravel 12, jangan cari Kernel.php lagi, langsung edit bootstrap/app.php.
9. Request & Validation
Form Request
buat form request sendiri lebih rapi daripada nulis validasi di dalam controller, apalagi kalau formnya sudah banyak field-nya. cara buatnya:
php artisan make:request StoreUserRequest
nanti muncul file baru di app/Http/Requests/StoreUserRequest.php, isi bagian rules() dengan aturan validasinya:
// app/Http/Requests/StoreUserRequest.php
public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:8|confirmed',
];
}
untuk memakainya di controller, tinggal jadikan type-hint di method:
public function store(StoreUserRequest $request)
{
// validasi sudah otomatis jalan sebelum masuk sini
User::create($request->validated());
}
kalau ada field yang tidak lolos validasi, laravel otomatis ngembaliin error ke halaman sebelumnya, lengkap dengan pesannya. jadi tidak perlu nulis ulang logika cek satu-satu 🙂
Custom Validation
untuk aturan yang tidak ada di bawaan laravel, kita bisa pakai validasi manual di controller atau bikin aturan custom sendiri:
$request->validate([
'username' => 'required|alpha_num|min:3|max:25|unique:users',
'email' => 'required|email|unique:users,email',
]);
atau pakai aturan custom lewat perintah:
php artisan make:rule Uppercase
di Laravel 10 ke bawah pakai method passes:
// app/Rules/Uppercase.php (Laravel 10)
public function passes($attribute, $value)
{
return strtoupper($value) === $value;
}
public function message()
{
return 'Kolom :attribute harus huruf besar semua.';
}
di Laravel 11 dan 12 pakai interface ValidationRule yang baru:
// app/Rules/Uppercase.php (Laravel 11/12)
use Illuminate\Contracts\Validation\ValidationRule;
class Uppercase implements ValidationRule
{
public function validate(string $attribute, mixed $value, Closure $fail): void
{
if (strtoupper($value) !== $value) {
$fail('Kolom :attribute harus huruf besar semua.');
}
}
}
File Upload
untuk upload file, aturannya cukup tambahkan file atau mimes di validasi, lalu simpan file-nya dengan method store:
$request->validate([
'avatar' => 'required|image|mimes:jpg,png|max:2048',
]);
$path = $request->file('avatar')->store('avatars', 'public');
file tersimpan di storage/app/public, jangan lupa jalankan php artisan storage:link biar bisa diakses lewat browser. masalah link storage ini saya bahas di php artisan storage link.
10. REST API
Membuat REST API
untuk membuat API, route-nya tidak di web.php melainkan di routes/api.php, dan URL-nya otomatis diberi prefix /api. di Laravel 11 dan 12 file api.php tidak dibuat otomatis, jalankan dulu:
php artisan install:api
baru isinya:
// routes/api.php
Route::apiResource('users', UserController::class);
atau kalau mau ditulis manual satu per satu:
Route::get('/users', [UserController::class, 'index']);
Route::post('/users', [UserController::class, 'store']);
Route::get('/users/{id}', [UserController::class, 'show']);
Route::put('/users/{id}', [UserController::class, 'update']);
Route::delete('/users/{id}', [UserController::class, 'destroy']);
buat cek hasilnya, kalian bisa tes pakai Postman atau langsung lewat browser untuk method GET.
API Resource
API Resource berfungsi buat ngebentuk format response API biar konsisten. misalnya kita tidak mau kolom password ikut terkirim ke client:
php artisan make:resource UserResource
// app/Http/Resources/UserResource.php
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
'created_at' => $this->created_at->toDateString(),
];
}
di controller tinggal:
public function show(User $user)
{
return new UserResource($user);
}
API Authentication (JWT vs Sanctum)
untuk API yang butuh login, cara yang umum dipakai adalah token. Laravel bawaan pakai Sanctum untuk SPA dan token sederhana, sedangkan JWT (JSON Web Token) butuh package tambahan seperti tymon/jwt-auth. polanya sama: saat user login, server mengeluarkan token, lalu token itu dikirim di header Authorization: Bearer <token> pada request berikutnya. route yang butuh login tinggal dibungkus middleware auth:sanctum (untuk Sanctum) atau auth:api (kalau sudah setup JWT).
jangan bingung, untuk pemula saya sarankan mulai dari Sanctum dulu, lebih simpel dan sudah included. JWT baru dipakai kalau memang butuh stateless token yang terpisah dari session.
untuk tutorial lengkap:
11. Testing
Unit Testing
testing itu cara buat memastikan fitur yang sudah kita buat tidak rusak saat ada perubahan. di laravel, kita bisa bikin test dengan perintah:
php artisan make:test UserTest
contoh test untuk cek proses login:
// tests/Feature/UserTest.php
public function test_user_can_login()
{
$response = $this->post('/login', [
'email' => '[email protected]',
'password' => 'password',
]);
$response->assertRedirect('/dashboard');
}
untuk menjalankannya:
php artisan test
Feature Testing
feature test nguji alur yang lebih panjang, misalnya user login lalu membuat artikel dan muncul di halaman utama.
public function test_user_can_create_post()
{
$user = User::factory()->create();
$this->actingAs($user)->post('/posts', [
'title' => 'Judul Artikel',
'body' => 'Isi artikelnya di sini',
]);
$this->assertDatabaseHas('posts', ['title' => 'Judul Artikel']);
}
HTTP Testing
untuk API, kita bisa tes langsung response-nya dengan method kayak getJson atau postJson:
public function test_api_returns_users()
{
$response = $this->getJson('/api/users');
$response->assertStatus(200)
->assertJsonStructure([['id', 'name', 'email']]);
}
saya akui, dulu saya males banget nulis test, sampai akhirnya ada fitur yang rusak diam-diam dan baru ketahuan di production. sejak itu saya biasakan nulis test minimal untuk alur login dan CRUD 🙂
12. Queue & Job
Apa itu Queue?
queue itu antrean tugas yang dijalankan di background. tugas berat kayak kirim email massal, proses gambar, atau export data, tidak perlu bikin user nunggu. tugasnya dimasukin ke antrean, dan worker yang ngejalaninnya belakangan.
Membuat Job
php artisan make:job SendEmail
// app/Jobs/SendEmail.php
public function handle()
{
Mail::to($this->user->email)->send(new WelcomeEmail($this->user));
}
untuk memasukkan tugas ke antrean, panggil dispatch:
SendEmail::dispatch($user);
Menjalankan Worker
agar queue berjalan, kita butuh worker yang memproses antrean:
php artisan queue:work
Scheduler
kalau ada tugas yang harus jalan otomatis tiap jam atau tiap hari, misalnya laporan harian atau hapus data sementara, tempat daftarnya beda tergantung versi:
untuk Laravel 10 ke bawah, di app/Console/Kernel.php:
// app/Console/Kernel.php
protected function schedule(Schedule $schedule)
{
$schedule->job(new SendLaporanHarian)->dailyAt('07:00');
$schedule->command('cleanup:temp')->weekly();
}
untuk Laravel 11 dan 12, di routes/console.php:
// routes/console.php (Laravel 11/12)
use Illuminate\Support\Facades\Schedule;
Schedule::job(new SendLaporanHarian)->dailyAt('07:00');
Schedule::command('cleanup:temp')->weekly();
untuk menjalankannya, pasang cron di server:
* * * * * cd /path-ke-project && php artisan schedule:run >> /dev/null 2>&1
cron ini wajib jalan tiap menit, nanti laravel sendiri yang mutusin tugas mana yang sudah waktunya dieksekusi. di Laravel 11/12 jangan cari Kernel.php lagi, langsung edit routes/console.php.
13. Deployment
Cara Deploy Laravel di Vercel
deploy laravel di vercel bisa untuk project yang ringan dan cepat, tapi perlu penyesuaian karena vercel bukan server PHP biasa. butuh vercel.json untuk menunjuk ke public/index.php sebagai entry point, dan file api/index.php sebagai bridge-nya.
bagi kalian yang baru mulai, saya sarankan deploy ke shared hosting atau VPS dulu karena paling mudah dan ramah kantong untuk Laravel. prosesnya biasanya: upload folder project ke public_html, pastikan root menunjuk ke folder public, lalu atur permission dan .env-nya. sudah banyak yang saya bantu lewat artikel deploy di bawah, dan pola errornya hampir selalu sama: permission atau cache.
tips 2026: kalau pakai Laravel 12 atau 13 di shared hosting, pastikan hosting sudah support PHP 8.2 atau 8.3, cek di cPanel MultiPHP Manager. banyak kasus error 500 cuma karena versi PHP belum diganti.
Deploy ke Server
sebelum upload ke server, jalankan perintah build berikut biar aplikasi berjalan optimal di production:
php artisan config:cache
php artisan route:cache
php artisan view:cache
Environment Configuration
jangan pernah menaruh kredensial di source code. simpan di file .env, dan pastikan file .env tidak ikut ter-upload ke git (sudah ada di .gitignore bawaan laravel).
APP_ENV=production
APP_DEBUG=false
DB_HOST=localhost
DB_DATABASE=nama_database
DB_USERNAME=root
DB_PASSWORD=rahasia
APP_DEBUG=false penting karena kalau true, error detail ikut tampil ke pengunjung, itu celah keamanan.
Optimization
setelah berjalan di production, beberapa perintah ini bisa bikin aplikasi lebih kencang:
# Cache config, route, dan view
php artisan optimize
# Bersihkan cache kalau ada perubahan
php artisan optimize:clear
14. Livewire & Modern Features
Livewire untuk Pemula
livewire adalah library full-stack yang memungkinkan kita membuat komponen interaktif tanpa nulis JavaScript sama sekali. cocok banget buat kalian yang masih nyaman dengan PHP murni tapi pengen halaman lebih responsif.
composer require livewire/livewire
contoh komponen counter paling sederhana:
{{-- resources/views/livewire/counter.blade.php --}}
<div>
<button wire:click="increment">+</button>
<span>{{ $count }}</span>
</div>
// app/Livewire/Counter.php (Livewire 3, namespace App\Livewire)
namespace App\Livewire;
use Livewire\Component;
class Counter extends Component
{
public $count = 0;
public function increment()
{
$this->count++;
}
}
Inertia.js
kalau kalian pengen SPA (Single Page Application) modern, inertia.js adalah pilihan yang menarik. beda dengan membangun API lalu frontend terpisah, inertia tetap memakai route dan controller laravel, tapi halamannya di-render oleh vue atau react di sisi client. rasanya kayak aplikasi SPA, tapi tanpa harus membuat API sendiri.
composer require inertiajs/inertia-laravel
npm install @inertiajs/vue3
Laravel Jetstream
jetstream adalah starter kit resmi dari laravel yang sudah termasuk login, registrasi, verifikasi email, two-factor authentication, dan manajemen tim. cocok buat kalian yang mau langsung fokus ke fitur utama tanpa pusing bikin autentikasi dari nol.
15. Troubleshooting
Cara Mengatasi Error 500 di Laravel
error 500 itu error paling umum di laravel, dan biasanya penyebabnya hal yang sederhana. urutan cek yang biasa saya lakukan:
- Cek log error di
storage/logs/laravel.log, dari situ biasanya langsung kelihatan penyebabnya - Clear semua cache
php artisan cache:clear php artisan config:clear php artisan route:clear php artisan view:clear - Periksa permission folder
storagedanbootstrap/cache, pastikan bisa ditulis oleh server
pengalaman yang paling sering saya temui di project laravel: lupa menjalankan
php artisan storage:link, atau.envtidak ke-copy saat pindah project. dua-duanya bikin error 500 tapi tidak tertulis jelas di log kalau tidak teliti 🙂
untuk kasus error lain yang sering terjadi, baca juga:
- mengatasi maximum execution time of 60 php laravel
- laravel could not find driver
- invalid request unsupported SSL request laravel
Clear Cache
kalau perubahan config atau route tidak kelihatan efeknya, biasanya cache yang masih nyangkut. bersihkan dengan:
# Bersihkan semua cache sekaligus
php artisan optimize:clear
# atau satu per satu
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
php artisan event:clear
Baca Juga Mengenai :
- cara install laravel terbaru di windows
- tutorial laravel membuat REST API CRUD dengan JWT
- cara migrate database laravel
- membuat REST API PHP sederhana
- php artisan storage link
- mengatasi maximum execution time of 60 php laravel
Pertanyaan yang Sering Diajukan
Laravel cocok untuk pemula?
cocok. laravel punya dokumentasi yang sangat baik, komunitas besar, dan banyak tutorial berbahasa indonesia. kuncinya jangan mulai dari hafalan konsep MVC, langsung bangun route dan controller pertama, konsepnya bakal masuk sendiri sambil praktek.
Berapa lama belajar Laravel untuk bisa kerja?
dengan belajar 2-3 jam per hari, kalian bisa membangun aplikasi CRUD dalam 1-2 bulan. buat project production butuh pengalaman 3-6 bulan. saran saya jangan menunggu paham semua dulu, langsung buat project CRUD sederhana kayak daftar tugas.
Versi Laravel apa yang sedang aktif di 2026?
di 2026 Laravel 13 resmi rilis 17 Maret 2026 (butuh PHP 8.3 ke atas) dan Laravel 12 masih aktif, bug fix sampai 13 Agustus 2026 dan security sampai 24 Februari 2027. untuk project baru, pakai Laravel 12 kalau server masih PHP 8.2, atau langsung 13 kalau sudah PHP 8.3.
Cara deploy Laravel di shared hosting?
jalankan php artisan config:cache, pastikan folder storage punya permission yang benar, dan root domain menunjuk ke folder public. jangan lupa APP_DEBUG=false di file .env.
Laravel atau CodeIgniter?
laravel lebih modern, fiturnya lebih banyak, cocok buat project menengah ke besar. codeigniter lebih ringan dan sederhana, cocok buat project kecil yang butuh loading cepat.

