Hari ini aku mulai seri baru di blog ini: Belajar Laravel. Rencananya 25 episode, dari nol sampai bisa membuat aplikasi web lengkap — sebuah Sistem Informasi sederhana dengan stack yang sengaja kubuat “bersahaja”: jQuery, Bootstrap, MySQL, dan Blade murni. Aku tidak memakai tool bantu populer yang bisa menyembunyikan cara kerja aslinya, karena tujuanku satu: paham benar bagaimana request masuk, bagaimana Blade merender HTML, dan bagaimana query sampai ke MySQL. Catatan ini kutulis sambil belajar, jadi kalau ada bagian yang terasa membingungkan — tenang, memang begitulah rasanya belajar.
Kenapa Laravel?
Sebelum ngoding, aku sempat bertanya: kenapa harus Laravel, bukan framework lain? Alasanku kurang lebih begini:
- Paling populer di ekosistem PHP — banyak dipakai perusahaan, jadi banyak lowongan yang butuh skill ini.
- Pola MVC — kode dipisah rapi: Controller untuk logika, Model untuk data, View untuk tampilan. Lama-lama ini terasa menyehatkan, apalagi kalau project mulai besar.
- Dokumentasi dan komunitas besar — nyaris semua error yang kuhadapi sudah pernah dialami orang lain, dan jawabannya mudah ditemukan.
- Artisan — command line tool bawaan yang mempercepat kerja rutin seperti membuat controller, migration, sampai menjalankan server.
Intinya: Laravel memberi struktur tanpa memaksa kita menulis semuanya dari nol, tapi tetap cukup “telanjang” untuk kita pelajari apa yang terjadi di balik layar.
Prasyarat: PHP & Composer
Laravel berjalan di atas PHP, jadi syarat pertama adalah PHP terpasang. Pastikan versi PHP-mu memenuhi syarat minimum yang tercantum di dokumentasi resmi Laravel — jangan asal pakai versi lawas, karena fitur framework terbaru biasanya butuh versi PHP tertentu. Cara mengeceknya:
php -v composer --version
Composer adalah manajer dependensi untuk PHP — kurang lebih seperti npm di dunia JavaScript. Lewat Composer-lah Laravel diunduh dan semua paket bawaannya dikelola. Kalau perintah composer tidak dikenali, biasanya PATH-nya belum ditambahkan ke sistem; ini salah satu hambatan pertama yang umum terjadi di Windows.
Ekstensi PHP yang Wajib Ada
Selain versi PHP yang cukup baru, Laravel juga membutuhkan beberapa ekstensi PHP aktif. Kalau salah satu belum aktif, Composer akan menolak install atau error muncul saat runtime. Ini daftar yang wajib dicek:
- mbstring — untuk operasi string multibyte (penting untuk teks Unicode).
- openssl — enkripsi data, termasuk APP_KEY.
- pdo_mysql — koneksi ke database MySQL melalui PDO.
- curl — HTTP request dari PHP ke service lain.
- xml dan tokenizer — dibutuhkan Composer saat proses instalasi.
Cara cek ekstensi mana yang sudah aktif:
php -m | grep -i mbstring php -m | grep -i openssl php -m | grep -i pdo_mysql
Jika ekstensi belum terlihat di hasil php -m, edit file php.ini — cari baris ;extension=mbstring lalu hapus titik koma di depannya. Simpan, restart Apache atau PHP-FPM, lalu cek ulang.
Troubleshooting Composer
Dari pengalaman, ada beberapa kendala umum saat pertama kali pakai Composer:
- Memory limit habis — error
Allowed memory size exhausted. Solusi: editphp.inidan naikkanmemory_limitdari 128M ke 512M, atau jalankan Composer dengan flag:php -d memory_limit=-1 $(which composer) install. - Behind proxy atau firewall — Composer tidak bisa mengunduh paket. Atur proxy lewat
composer config --global http-proxy http://proxy-host:port. - Permission denied di Linux — biasanya karena Composer diinstal global untuk root tapi dijalankan sebagai user biasa. Jalankan
sudo chown -R $USER ~/.composeruntuk mengatasinya.
Environment Lokal
Untuk belajar, kita cukup butuh lingkungan lokal yang berisi PHP, Composer, dan MySQL. Pilihannya tergantung sistem operasi:
- Windows — XAMPP paling umum dipakai pemula karena satu paket: PHP, MySQL, dan Apache. Alternatif yang lebih ringan dan cepat: Laragon.
- macOS — Laravel Valet atau Laravel Herd; ringan, tanpa panel berat, cocok untuk development sehari-hari.
- Linux — install PHP dan Composer langsung dari package manager.
Yang penting diingat: apapun pilihannya, kebutuhan intinya sama — PHP, Composer, dan MySQL. Jangan terjebak terlalu lama memilih-milih tool; pakai yang paling cepat jalan di mesinmu.
Alternatif Environment: Herd, Valet, dan Docker Sail
Selain XAMPP atau Laragon, ada beberapa pilihan modern yang layak dipertimbangkan. Laravel Herd adalah tool all-in-one buatan tim Laravel sendiri untuk macOS dan Windows — ia menyediakan PHP, Nginx, dan database tanpa perlu setup manual. Cukup install satu aplikasi, project langsung jalan di browser. Sementara itu, Laravel Sail menawarkan pendekatan Docker: semua layanan (PHP, MySQL, Redis, dan lain-lain) berjalan di container. Cocok kalau mau environment yang reproducible dan tidak mencemari sistem host.
# Contoh menjalankan project via Laravel Sail ./vendor/bin/sail up ./vendor/bin/sail artisan serve
Untuk pemula, saya sarankan mulai dari XAMPP atau Herd yang sederhana. Docker Sail bisa dipelajari belakangan ketika sudah nyaman dengan workflow dasar Laravel.
Membuat Project Laravel
Setelah PHP dan Composer siap, membuat project Laravel baru cuma satu perintah:
composer create-project laravel/laravel nama-project cd nama-project
Catatan jujur: proses pertama kali bisa terasa lama karena Composer mengunduh ratusan paket. Layar terlihat “diam” lama — itu normal, bukan hang. Setelah selesai, struktur folder di dalam project kira-kira begini:
Peta Folder Project Laravel
Memahami struktur folder adalah kunci untuk tidak tersesat. Ini yang saya pelajari dari pengalaman: 90% waktu kita hanya bermain di tiga folder utama, tapi memahami sisanya membantu saat harus mengutak-atik konfigurasi.
app/— kode inti aplikasi. Di dalamnya terdapatHttp/Controllersuntuk logika request,Modelsuntuk representasi data, danProvidersuntuk service container.config/— seluruh konfigurasi aplikasi dalam bentuk file PHP: database, cache, session, mail, dan lain-later. Nilai di sini bisa di-override lewat.env.routes/—routes/web.phpadalah “pintu masuk” semua request dari browser.routes/api.phpuntuk endpoint API.resources/views/— file tampilan Blade (HTML). Setiap file berakhir.blade.php.database/migrations/— skema tabel dalam bentuk kode. Ini pendekatan “database as code” yang membuat perubahan struktur tabel bisa ditrack via Git.storage/— log aplikasi, cache compiled Blade, dan file upload. Folder ini harus writable oleh web server.public/— satu-satunya folder yang “dilihat” web server;index.phpada di sini. Semua file aset (CSS, JS, gambar) juga diletakkan di sini..env— konfigurasi rahasia: kredensial database, APP_KEY, URL aplikasi, dan pengaturan environment lainnya. Jangan pernah commit file ini ke Git.
Konfigurasi Awal: .env, APP_KEY, dan Database
Setelah project terbuat, ada tiga hal yang harus dicek sebelum menjalankan aplikasi: file .env, APP_KEY, dan koneksi database. Saya anggap ini “ritual wajib” sebelum bisa mulai coding.
Menyiapkan .env
File .env terletak di root project. Saat pertama kali dibuat, Laravel sudah mengisi beberapa nilai default. Yang perlu diperhatikan:
APP_NAME=Laravel APP_ENV=local APP_KEY= APP_DEBUG=true APP_URL=http://localhost:8000 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=nama_database DB_USERNAME=root DB_PASSWORD=
Isi DB_DATABASE dengan nama database yang sudah dibuat di MySQL. Untuk DB_USERNAME dan DB_PASSWORD, sesuaikan dengan kredensial MySQL di mesin lokal.
Membuat Database dan APP_KEY
Buat database kosong di MySQL terlebih dahulu, lalu generate APP_KEY:
# Buat database lewat MySQL CLI mysql -u root -p -e "CREATE DATABASE nama_project;" # Generate APP_KEY (biasanya sudah otomatis, tapi kalau belum:) php artisan key:generate
APP_KEY digunakan Laravel untuk enkripsi session, cookie, dan data terenkripsi lainnya. Tanpa kunci ini, aplikasi akan menolak berjalan — ini adalah pengaman pertama yang dijamin oleh framework.
Menjalankan Migration Pertama
Laravel menyertakan migration default untuk tabel users, password resets, dan lain-lain. Jalankan ini untuk membuat tabel-tabel tersebut di database:
php artisan migrate
Perintah ini membaca semua file di database/migrations/ dan membuat tabel sesuai instruksi di dalamnya. Saya merekomendasikan menjalankan migrate setiap kali menambahkan migration baru, bukan menumpuk semua di akhir — lebih mudah menangkap error.
Menjalankan Server
Laravel punya server bawaan untuk development, dijalankan lewat Artisan:
php artisan serve
Setelah itu buka http://127.0.0.1:8000 — kalau muncul halaman selamat datang Laravel, berarti project-mu sudah hidup. Dua hal yang sering kuhadapi di tahap ini: pesan minta APP_KEY di .env (biasanya sudah ter-generate saat create-project; kalau belum, jalankan php artisan key:generate), dan port 8000 yang sudah dipakai aplikasi lain — ganti dengan php artisan serve --port=8080.
Git Init dan .gitignore
Langkah yang sering saya lupakan di awal: menginisialisasi Git segera setelah project dibuat. Padahal, folder vendor/ berisi ribuan file dari Composer — ini tidak boleh masuk ke repository.
git init git add . git commit -m "Initial Laravel project"
Beruntung, Laravel sudah menyertakan file .gitignore yang sudah benar sejak awal. Ia secara otomatis mengabaikan vendor/, .env, node_modules/, dan file log. Ini contoh .gitignore bawaan yang sudah cukup lengkap — tidak perlu diutak-atik untuk project belajar.
Tabel Kompatibilitas: PHP vs Laravel
Sering bingung versi Laravel mana yang cocok dengan PHP yang terpasang? Ini tabel referensi cepat yang saya buat untuk diri sendiri:
| Laravel Versi | PHP Minimum | PHP Recommended | Status |
|---|---|---|---|
| Laravel 11 | PHP 8.2 | PHP 8.3+ | Stable |
| Laravel 10 | PHP 8.1 | PHP 8.2+ | Stable (LTS) |
| Laravel 9 | PHP 8.0 | PHP 8.1+ | Security fixes only |
| Laravel 8 | PHP 7.3 | PHP 8.0+ | End of life |
Catatan: tabel ini bisa berubah seiring waktu. Selalu cek dokumentasi resmi Laravel untuk versi terbaru. Yang terpenting: jangan pakai PHP 7.x untuk project baru — versi PHP di atasnya sudah sangat stabil dan lebih cepat.
Pengalaman Pertama Install Laravel
Saat pertama kali menjalankan composer create-project, saya sempat panik karena terminal “diam” selama beberapa menit. Ternyata Composer sedang mengunduh lebih dari 200 paket — itu normal. Pesan error pertama yang saya terima adalah tentang ekstensi mbstring yang belum aktif, dan itu membuat saya menyadari betapa pentingnya mengecek requirements sebelum install. Setelah semua teratasi, halaman selamat datang Laravel di localhost:8000 terasa seperti sebuah pencapaian kecil — tanda bahwa environment sudah benar dan siap untuk coding. Jangan remehkan momen ini; ini adalah fondasi yang membuat seluruh proses belajar selanjutnya lebih lancar.
Kesalahan yang Umum
- Versi PHP terlalu tua — cek
php -v, lalu samakan dengan syarat minimum di dokumentasi resmi. - Composer tidak dikenali — PATH belum diatur; cari “add Composer to PATH” saat instalasi.
- Ekstensi PHP kurang — misalnya mbstring atau openssl; aktifkan di php.ini atau panel XAMPP/Laragon.
- Lupa perbedaan folder — aku sering bingung “file mana yang harus diutak-atik”. Di episode-episode awal, 90% waktu kita habis di
routes/,app/Http/Controllers, danresources/views.
Kesimpulan
Di episode ini kita sudah punya project Laravel yang berjalan di browser. Bagian yang paling membingungkan bagiku di awal ternyata bukan sintaks, tapi peta mental: “request masuk lewat mana, lalu ke mana?” Jawaban singkatnya: browser → routes/web.php → Controller → View. Di episode berikutnya kita akan membedah alur itu satu per satu: routing dan controller pertama.
Komentar Terbaru