Laravel adalah framework PHP yang populer digunakan untuk membangun aplikasi web modern. Dikenal karena sintaksnya yang elegan, fitur-fiturnya yang kaya, dan komunitasnya yang besar, Laravel menjadi pilihan utama bagi banyak pengembang web. Jika kamu seorang pemula yang ingin mempelajari Laravel, tutorial ini akan memandumu langkah demi langkah, mulai dari persiapan hingga membangun aplikasi sederhana. Artikel ini ditulis dalam Bahasa Indonesia agar mudah dipahami.
1. Apa Itu Laravel dan Mengapa Memilihnya? (Pengenalan Laravel)
Sebelum kita mulai coding, mari kita pahami dulu apa itu Laravel dan mengapa begitu banyak pengembang menyukainya.
Laravel adalah framework PHP open-source yang didesain untuk memudahkan pengembangan aplikasi web dengan mengikuti pola desain Model-View-Controller (MVC). MVC memisahkan logika aplikasi (Model), tampilan (View), dan penanganan input pengguna (Controller), sehingga kode menjadi lebih terstruktur, mudah dibaca, dan mudah dipelihara.
Mengapa Memilih Laravel?
- Sintaks yang Elegan: Laravel menawarkan sintaks yang bersih, mudah dibaca, dan intuitif. Ini membuat coding lebih menyenangkan dan mengurangi kemungkinan kesalahan.
- Fitur Lengkap: Laravel menyediakan berbagai fitur bawaan, seperti sistem routing, template engine (Blade), ORM (Eloquent), autentikasi, dan banyak lagi. Kamu tidak perlu membangun semuanya dari awal.
- Keamanan: Laravel memiliki fitur keamanan yang kuat, seperti perlindungan terhadap serangan CSRF, SQL Injection, dan XSS.
- Komunitas Besar: Laravel memiliki komunitas yang sangat aktif dan suportif. Ada banyak sumber daya, seperti dokumentasi, tutorial, dan forum, yang tersedia untuk membantu kamu belajar dan mengatasi masalah.
- Scalability: Laravel dirancang untuk aplikasi yang besar dan kompleks. Framework ini mendukung berbagai teknik optimasi dan caching untuk meningkatkan performa.
- Eloquent ORM yang Mudah Digunakan: Berinteraksi dengan database menjadi jauh lebih mudah berkat Eloquent ORM dari Laravel. Kamu bisa melakukan operasi CRUD dengan sintaks yang jelas dan ringkas.
Singkatnya, Laravel adalah pilihan yang tepat jika kamu ingin membangun aplikasi web modern dengan cepat, efisien, dan aman.
2. Persiapan Lingkungan Pengembangan Laravel: Instalasi dan Konfigurasi
Sebelum memulai tutorial Laravel untuk pemula ini, pastikan kamu sudah menyiapkan lingkungan pengembangan (development environment) yang sesuai. Berikut langkah-langkahnya:
A. Instalasi PHP
Laravel membutuhkan PHP versi 7.4 atau lebih tinggi. Jika kamu belum menginstall PHP, unduh dan install dari https://www.php.net/downloads. Pastikan kamu menambahkan PHP ke PATH sistem operasi kamu agar bisa diakses dari command line.
B. Instalasi Composer
Composer adalah dependency manager untuk PHP. Dengan Composer, kamu bisa menginstall dan mengelola library dan package yang dibutuhkan oleh aplikasi Laravel kamu. Unduh dan install Composer dari https://getcomposer.org/download/. Pastikan juga Composer ditambahkan ke PATH sistem operasi kamu.
C. Instalasi Node.js dan npm (Opsional, Tapi Sangat Dianjurkan)
Meskipun tidak wajib untuk menjalankan Laravel, Node.js dan npm (Node Package Manager) sangat berguna untuk mengelola frontend assets seperti CSS dan JavaScript. Beberapa fitur Laravel, seperti Laravel Mix (untuk mengkompilasi assets), membutuhkan Node.js dan npm.
Unduh dan install Node.js dari https://nodejs.org/. npm biasanya sudah termasuk dalam instalasi Node.js.
D. Instalasi XAMPP/Laragon/Docker (Alternatif)
Jika kamu kesulitan menginstall PHP, Composer, dan Node.js secara manual, kamu bisa menggunakan environment yang sudah dikonfigurasi seperti XAMPP, Laragon, atau Docker.
- XAMPP: Menyediakan Apache, MySQL, PHP, dan Perl dalam satu paket. Cocok untuk pemula yang ingin setup cepat. https://www.apachefriends.org/index.html
- Laragon: Environment yang ringan dan cepat khusus untuk pengembangan PHP, termasuk Laravel. https://laragon.org/
- Docker: Memungkinkan kamu membuat container yang terisolasi untuk aplikasi kamu. Cocok untuk proyek yang lebih kompleks dan membutuhkan konsistensi lingkungan. https://www.docker.com/
E. Instalasi Laravel Installer
Setelah Composer terinstall, kamu bisa menginstall Laravel Installer secara global. Buka command line kamu dan jalankan perintah berikut:
composer global require laravel/installer
F. Verifikasi Instalasi
Untuk memastikan semuanya berjalan dengan baik, buka command line dan ketik perintah php -v untuk memverifikasi versi PHP, composer -v untuk Composer, dan laravel -v untuk Laravel Installer.
3. Membuat Proyek Laravel Baru: Perintah dan Struktur Direktori
Setelah lingkungan pengembangan siap, saatnya membuat proyek Laravel baru. Buka command line kamu dan navigasikan ke direktori tempat kamu ingin menyimpan proyek kamu. Kemudian, jalankan salah satu perintah berikut:
A. Menggunakan Laravel Installer:
laravel new nama-proyek
Ganti nama-proyek dengan nama yang kamu inginkan untuk proyek kamu. Contoh:
laravel new blog-saya
B. Menggunakan Composer Create-Project:
composer create-project --prefer-dist laravel/laravel nama-proyek
Perintah ini akan mengunduh dan menginstall semua dependency yang dibutuhkan untuk proyek Laravel kamu. Proses ini mungkin memakan waktu beberapa menit.
Struktur Direktori Laravel
Setelah proyek berhasil dibuat, kamu akan melihat struktur direktori seperti berikut:
app/: Berisi kode inti aplikasi kamu, seperti Model, Controller, dan Provider.bootstrap/: Berisi file-file yang digunakan untuk melakukan bootstraping framework.config/: Berisi file konfigurasi untuk berbagai aspek aplikasi kamu, seperti database, email, dan session.database/: Berisi file migrasi dan seeder untuk database.public/: Direktori public yang berisi file-file statis seperti CSS, JavaScript, dan gambar.resources/: Berisi file view (template Blade), assets (CSS, JavaScript), dan language files.routes/: Berisi file-file routing yang menentukan bagaimana aplikasi kamu menangani permintaan HTTP.storage/: Berisi file-file yang di-generate oleh aplikasi kamu, seperti cache, session, dan uploads.tests/: Berisi file-file untuk melakukan pengujian (testing) aplikasi kamu.vendor/: Berisi dependency yang di-install oleh Composer.
4. Routing di Laravel: Menangani Permintaan HTTP
Routing adalah proses memetakan URL (Uniform Resource Locator) ke controller atau closure yang sesuai. Dalam Laravel, routing didefinisikan dalam file-file yang ada di direktori routes/.
A. File-file Routing
routes/web.php: Untuk mendefinisikan route yang diakses melalui web browser.routes/api.php: Untuk mendefinisikan route untuk API (Application Programming Interface).routes/console.php: Untuk mendefinisikan perintah Artisan (command-line interface) khusus.routes/channels.php: Untuk mendefinisikan channel untuk broadcasting (fitur untuk mengirimkan data secara real-time).
B. Membuat Route Sederhana
Buka file routes/web.php. Kamu akan melihat beberapa contoh route yang sudah ada. Mari kita tambahkan route baru:
<?php
use IlluminateSupportFacadesRoute;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Route::get('/halo', function () {
return 'Halo Dunia!';
});
Kode di atas mendefinisikan route baru dengan method GET dan URL /halo. Ketika pengguna mengakses URL /halo, aplikasi akan menampilkan teks “Halo Dunia!”.
C. Mengakses Route
Untuk mengakses route ini, jalankan server pengembangan Laravel dengan perintah:
php artisan serve
Buka browser kamu dan kunjungi URL http://localhost:8000/halo. Kamu akan melihat teks “Halo Dunia!” ditampilkan.
D. Route dengan Parameter
Kamu juga bisa membuat route dengan parameter. Contoh:
Route::get('/user/{id}', function ($id) {
return 'User ID: ' . $id;
});
Ketika pengguna mengakses URL /user/123, aplikasi akan menampilkan teks “User ID: 123”. Nilai 123 akan diteruskan sebagai parameter $id ke closure.
E. Menggunakan Controller
Biasanya, logika aplikasi yang lebih kompleks ditempatkan di dalam controller. Mari kita buat controller baru:
php artisan make:controller UserController
Perintah ini akan membuat file UserController.php di direktori app/Http/Controllers/. Buka file tersebut dan tambahkan method baru:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
class UserController extends Controller
{
public function show($id)
{
return 'Menampilkan user dengan ID: ' . $id;
}
}
Kemudian, ubah route di routes/web.php untuk menggunakan controller:
Route::get('/user/{id}', [UserController::class, 'show']);
Sekarang, ketika pengguna mengakses URL /user/456, aplikasi akan menjalankan method show di UserController dan menampilkan teks “Menampilkan user dengan ID: 456”.
5. Blade Templating Engine: Membuat Tampilan yang Dinamis
Blade adalah template engine yang disediakan oleh Laravel. Dengan Blade, kamu bisa membuat tampilan yang dinamis dan mudah dipelihara menggunakan sintaks yang ringkas dan ekspresif.
A. Membuat View
File view disimpan di direktori resources/views/. Mari kita buat view baru bernama halo.blade.php:
<!DOCTYPE html>
<html>
<head>
<title>Halo</title>
</head>
<body>
<h1>Halo, {{ $nama }}!</h1>
<p>Selamat datang di aplikasi Laravel saya.</p>
</body>
</html>
Perhatikan penggunaan {{ $nama }}. Ini adalah cara Blade menampilkan variabel.
B. Mengirim Data ke View
Untuk mengirim data ke view, kamu bisa menggunakan method view() di controller:
public function halo()
{
$nama = 'John Doe';
return view('halo', ['nama' => $nama]);
}
Kemudian, tambahkan route di routes/web.php:
Route::get('/halo', [UserController::class, 'halo']);
Ketika pengguna mengakses URL /halo, aplikasi akan menampilkan view halo.blade.php dengan variabel $nama yang bernilai “John Doe”.
C. Blade Directives
Blade menyediakan berbagai directive yang memudahkan kamu untuk membuat tampilan yang kompleks. Beberapa contoh directive yang sering digunakan:
@if,@elseif,@else,@endif: Untuk membuat pernyataan kondisional.@foreach,@endforeach: Untuk melakukan perulangan.@include: Untuk menyertakan view lain.@extends,@section,@yield: Untuk membuat layout dan template.
D. Contoh Penggunaan Directive
@if ($isAdmin)
<p>Anda adalah administrator.</p>
@else
<p>Anda adalah pengguna biasa.</p>
@endif
<ul>
@foreach ($users as $user)
<li>{{ $user->name }}</li>
@endforeach
</ul>
@include('partials.footer')
6. Eloquent ORM: Berinteraksi dengan Database
Eloquent ORM (Object-Relational Mapper) adalah fitur Laravel yang memungkinkan kamu berinteraksi dengan database menggunakan objek PHP. Dengan Eloquent, kamu tidak perlu menulis query SQL secara manual.
A. Konfigurasi Database
Sebelum menggunakan Eloquent, kamu perlu mengkonfigurasi koneksi database di file .env. Buka file .env dan ubah nilai-nilai berikut sesuai dengan konfigurasi database kamu:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nama_database
DB_USERNAME=nama_user
DB_PASSWORD=password
B. Membuat Model
Model adalah representasi dari tabel database. Untuk membuat model, gunakan perintah Artisan:
php artisan make:model User
Perintah ini akan membuat file User.php di direktori app/. Buka file tersebut dan tambahkan kode berikut:
<?php
namespace AppModels;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;
class User extends Model
{
use HasFactory;
}
C. Membuat Migrasi
Migrasi adalah cara untuk membuat dan memodifikasi skema database. Untuk membuat migrasi untuk tabel users, gunakan perintah Artisan:
php artisan make:migration create_users_table
Perintah ini akan membuat file migrasi di direktori database/migrations/. Buka file tersebut dan tambahkan kode berikut:
<?php
use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
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();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
D. Menjalankan Migrasi
Untuk menjalankan migrasi, gunakan perintah Artisan:
php artisan migrate
Perintah ini akan membuat tabel users di database kamu.
E. Melakukan Operasi CRUD dengan Eloquent
Eloquent menyediakan berbagai method untuk melakukan operasi CRUD (Create, Read, Update, Delete) pada database.
-
Create:
$user = new AppModelsUser; $user->name = 'John Doe'; $user->email = '[email protected]'; $user->password = bcrypt('password'); $user->save(); -
Read:
// Mengambil semua user $users = AppModelsUser::all(); // Mengambil user berdasarkan ID $user = AppModelsUser::find(1); // Mengambil user berdasarkan kriteria $user = AppModelsUser::where('email', '[email protected]')->first(); -
Update:
$user = AppModelsUser::find(1); $user->name = 'Jane Doe'; $user->save(); -
Delete:
$user = AppModelsUser::find(1); $user->delete();
7. Form dan Validasi: Menerima dan Memvalidasi Input Pengguna
Form dan validasi adalah bagian penting dari aplikasi web. Laravel memudahkan kamu untuk membuat form dan memvalidasi input pengguna.
A. Membuat Form
Buat view baru bernama create.blade.php di direktori resources/views/. Tambahkan kode berikut:
<form method="POST" action="/users">
@csrf
<div>
<label for="name">Nama:</label>
<input type="text" id="name" name="name" value="{{ old('name') }}">
@error('name')
<div>{{ $message }}</div>
@enderror
</div>
<div>
<label for="email">Email:</label>
<input type="email" id="email" name="email" value="{{ old('email') }}">
@error('email')
<div>{{ $message }}</div>
@enderror
</div>
<div>
<label for="password">Password:</label>
<input type="password" id="password" name="password">
@error('password')
<div>{{ $message }}</div>
@enderror
</div>
<button type="submit">Simpan</button>
</form>
Perhatikan penggunaan @csrf. Ini adalah directive untuk melindungi form kamu dari serangan CSRF (Cross-Site Request Forgery). Perhatikan juga penggunaan old('name'), @error('name'), dan seterusnya. Ini digunakan untuk menampilkan nilai input sebelumnya dan pesan error validasi.
B. Membuat Controller
Buat method create dan store di UserController:
public function create()
{
return view('create');
}
public function store(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:8',
]);
$user = new AppModelsUser;
$user->name = $validatedData['name'];
$user->email = $validatedData['email'];
$user->password = bcrypt($validatedData['password']);
$user->save();
return redirect('/users');
}
C. Menambahkan Route
Tambahkan route di routes/web.php:
Route::get('/users/create', [UserController::class, 'create']);
Route::post('/users', [UserController::class, 'store']);
D. Validasi Input
Laravel menyediakan cara yang mudah untuk memvalidasi input pengguna. Kamu bisa menggunakan method validate() di controller. Method ini menerima array yang berisi aturan validasi. Jika validasi gagal, Laravel akan secara otomatis redirect pengguna kembali ke form dengan pesan error.
8. Autentikasi: Mengamankan Aplikasi dengan Login dan Registrasi
Autentikasi adalah proses memverifikasi identitas pengguna. Laravel menyediakan fitur autentikasi yang lengkap dan mudah digunakan.
A. Scaffold Autentikasi
Laravel menyediakan scaffold autentikasi yang bisa kamu gunakan untuk membuat halaman login, registrasi, dan reset password dengan cepat. Jalankan perintah Artisan berikut:
composer require laravel/ui
php artisan ui vue --auth // atau php artisan ui react --auth atau php artisan ui bootstrap --auth
npm install
npm run dev
Perintah ini akan menginstall Laravel UI, memilih frontend framework (Vue, React, atau Bootstrap), dan menghasilkan view dan route yang dibutuhkan untuk autentikasi.
B. Migrasi Database
Pastikan kamu sudah menjalankan migrasi database untuk membuat tabel users:
php artisan migrate
C. Menggunakan Fitur Autentikasi
Setelah scaffold autentikasi terinstall, kamu bisa mengakses halaman login dan registrasi melalui URL /login dan /register. Kamu juga bisa menggunakan middleware auth untuk melindungi route yang hanya boleh diakses oleh pengguna yang sudah login:
Route::get('/profile', function () {
// Hanya bisa diakses oleh pengguna yang sudah login
})->middleware('auth');
9. Eloquent Relationships: Menghubungkan Tabel Database
Eloquent Relationships memungkinkan Anda mendefinisikan hubungan antara model yang berbeda, mencerminkan bagaimana tabel-tabel di database saling terkait. Ini membuat pengambilan dan manipulasi data yang terkait menjadi lebih mudah dan intuitif.
A. Jenis-jenis Relationships
Laravel mendukung beberapa jenis relationships, di antaranya:
- One To One: Satu model memiliki satu relasi dengan model lain. Contoh: Satu
Usermemiliki satuProfile. - One To Many: Satu model memiliki banyak relasi dengan model lain. Contoh: Satu
Postmemiliki banyakComment. - Many To One (Inverse of One To Many): Banyak model memiliki satu relasi dengan model lain. Contoh: Banyak
Commentdimiliki oleh satuPost. - Many To Many: Banyak model memiliki banyak relasi dengan model lain. Biasanya menggunakan tabel pivot. Contoh: Satu
Postmemiliki banyakTagdan satuTagmemiliki banyakPost. - Has One Through: Akses relasi one-to-one melalui relasi lain.
- Has Many Through: Akses relasi one-to-many melalui relasi lain.
- Polymorphic Relationships: Memungkinkan model untuk memiliki relasi dengan berbagai jenis model lain menggunakan satu relasi yang sama.
B. Contoh One To One: User dan Profile
-
Buat Model Profile:
php artisan make:model Profile -mIni akan membuat model
Profiledan migrasi untuk tabelprofiles. -
Edit Migrasi Profile:
Buka
database/migrations/<timestamp>_create_profiles_table.phpdan tambahkan:public function up() { Schema::create('profiles', function (Blueprint $table) { $table->id(); $table->foreignId('user_id')->constrained()->onDelete('cascade'); // Foreign key ke tabel users $table->string('address')->nullable(); $table->string('phone_number')->nullable(); $table->timestamps(); }); }Jalankan migrasi:
php artisan migrate -
Definisikan Relationship di Model User:
Buka
app/Models/User.phpdan tambahkan:public function profile() { return $this->hasOne(Profile::class); } -
Definisikan Relationship di Model Profile:
Buka
app/Models/Profile.phpdan tambahkan:public function user() { return $this->belongsTo(User::class); } -
Menggunakan Relationship:
// Mengambil profile user dengan ID 1 $user = AppModelsUser::find(1); $profile = $user->profile; // Mengambil user yang memiliki profile dengan ID 1 $profile = AppModelsProfile::find(1); $user = $profile->user;
C. Contoh One To Many: Post dan Comment
(Langkah-langkahnya mirip dengan contoh One To One, hanya berbeda pada definisi relationship-nya. Gunakan hasMany() pada model Post dan belongsTo() pada model Comment.)
Penting: Memahami dan menerapkan Eloquent Relationships adalah kunci untuk membangun aplikasi Laravel yang kompleks dan efisien.
10. Artisan Console: Memudahkan Pekerjaan Pengembang
Artisan adalah command-line interface (CLI) yang disediakan oleh Laravel. Artisan menyediakan berbagai perintah yang memudahkan kamu untuk melakukan tugas-tugas pengembangan, seperti membuat controller, model, migrasi, dan banyak lagi.
A. Menggunakan Perintah Artisan
Untuk menjalankan perintah Artisan, buka command line kamu dan ketik php artisan. Kamu akan melihat daftar perintah yang tersedia.
B. Perintah-perintah Artisan yang Sering Digunakan
php artisan make:controller: Membuat controller baru.php artisan make:model: Membuat model baru.php artisan make:migration: Membuat migrasi baru.php artisan migrate: Menjalankan migrasi.php artisan serve: Menjalankan server pengembangan Laravel.php artisan tinker: Membuka REPL (Read-Eval-Print Loop) untuk berinteraksi dengan aplikasi kamu.php artisan cache:clear: Menghapus cache aplikasi.php artisan route:list: Menampilkan daftar route yang terdaftar.
C. Membuat Perintah Artisan Sendiri
Kamu juga bisa membuat perintah Artisan sendiri untuk melakukan tugas-tugas khusus yang dibutuhkan oleh aplikasi kamu. Untuk membuat perintah Artisan baru, gunakan perintah php artisan make:command NamaPerintah.
Kesimpulan: Melanjutkan Pembelajaran Laravel
Selamat! Kamu telah menyelesaikan tutorial Laravel untuk pemula ini. Kamu telah mempelajari dasar-dasar Laravel, mulai dari persiapan lingkungan pengembangan, routing, Blade templating engine, Eloquent ORM, form dan validasi, autentikasi, relasi database, hingga Artisan console.
Tutorial Laravel untuk pemula ini hanyalah permulaan. Ada banyak lagi yang bisa kamu pelajari tentang Laravel. Berikut beberapa saran untuk melanjutkan pembelajaran kamu:
- Baca Dokumentasi Resmi Laravel: Dokumentasi resmi Laravel adalah sumber informasi yang paling lengkap dan akurat. https://laravel.com/docs
- Ikuti Tutorial dan Kursus Online: Ada banyak tutorial dan kursus online tentang Laravel, baik gratis maupun berbayar.
- Bergabung dengan Komunitas Laravel: Bergabunglah dengan komunitas Laravel dan bertanyalah jika kamu memiliki pertanyaan atau masalah.
- Bangun Proyek Sendiri: Cara terbaik untuk belajar Laravel adalah dengan membangun proyek sendiri.
Dengan latihan dan ketekunan, kamu akan menjadi pengembang Laravel yang handal. Selamat coding! Semoga tutorial Laravel untuk pemula ini bermanfaat bagi Anda. Teruslah belajar dan bereksplorasi dengan Laravel!



