Laravel, framework PHP yang elegan dan kuat, menjadi pilihan utama bagi banyak developer web. Jika kamu seorang pemula yang ingin terjun ke dunia Laravel dan bingung dari mana memulai, maka artikel ini akan menjadi panduanmu! Kita akan membahas contoh project Laravel sederhana yang fokus pada implementasi database untuk pemula. Mari kita pelajari langkah demi langkah, mulai dari setup awal hingga menampilkan data dari database. Siap? Mari kita mulai!
1. Mengenal Laravel dan Keunggulannya: Mengapa Laravel Cocok untuk Pemula?
Sebelum kita melompat ke kode, mari kita pahami dulu apa itu Laravel dan mengapa framework ini begitu populer, terutama di kalangan pemula.
Laravel adalah framework PHP open-source yang dirancang untuk mempermudah pengembangan aplikasi web. Ia menyediakan berbagai fitur siap pakai seperti routing, templating, ORM (Object-Relational Mapping), dan otentikasi.
Keunggulan Laravel untuk Pemula:
- Sintaks yang Elegan: Laravel menggunakan sintaks yang bersih dan mudah dibaca, sehingga lebih mudah dipelajari dibandingkan framework PHP lainnya.
- Dokumentasi Lengkap: Laravel memiliki dokumentasi yang sangat lengkap dan terstruktur dengan baik, sehingga kamu bisa dengan mudah menemukan jawaban untuk pertanyaanmu.
- Komunitas yang Aktif: Laravel memiliki komunitas yang besar dan aktif, sehingga kamu bisa mendapatkan bantuan dari developer lain jika mengalami kesulitan.
- Fitur Out-of-the-Box: Laravel menyediakan banyak fitur siap pakai, seperti templating engine Blade, sistem otentikasi, dan ORM Eloquent, yang akan mempercepat proses pengembangan aplikasimu.
- Security Built-in: Laravel memiliki fitur keamanan bawaan yang melindungi aplikasimu dari serangan umum seperti SQL injection dan cross-site scripting (XSS).
Dengan semua keunggulan ini, Laravel adalah pilihan yang tepat untuk pemula yang ingin belajar pengembangan web dengan PHP. Jadi, jangan ragu untuk memulai petualanganmu dengan Laravel!
2. Setup Awal Project Laravel: Persiapan Lingkungan Pengembangan
Sebelum kita mulai membuat project, kita perlu menyiapkan lingkungan pengembangan kita terlebih dahulu. Pastikan kamu sudah memiliki:
- PHP: Versi PHP 7.3 atau lebih tinggi. Kamu bisa mengecek versi PHP dengan perintah
php -vdi terminal. - Composer: Package manager untuk PHP. Kamu bisa mengunduhnya di getcomposer.org.
- Database: MySQL, PostgreSQL, atau SQLite. Pilih salah satu yang paling familiar bagimu. Dalam contoh ini, kita akan menggunakan MySQL.
- Text Editor/IDE: Visual Studio Code, Sublime Text, atau PHPStorm. Gunakan editor yang paling nyaman bagimu.
Setelah semua persiapan selesai, mari kita buat project Laravel baru. Buka terminal dan jalankan perintah berikut:
composer create-project --prefer-dist laravel/laravel contoh-project-laravel
Perintah ini akan membuat project Laravel baru dengan nama “contoh-project-laravel”. Setelah proses selesai, masuk ke direktori project:
cd contoh-project-laravel
Sekarang, kita perlu mengkonfigurasi database. Buka file .env di direktori project dan cari bagian database:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nama_database_kamu
DB_USERNAME=nama_pengguna_database
DB_PASSWORD=password_database_kamu
Ganti nilai DB_DATABASE, DB_USERNAME, dan DB_PASSWORD dengan informasi database yang kamu miliki. Pastikan database sudah dibuat sebelumnya.
Terakhir, jalankan migration awal Laravel untuk membuat tabel users dan password_resets:
php artisan migrate
Jika proses migration berhasil, berarti lingkungan pengembanganmu sudah siap! Sekarang, mari kita lanjutkan ke langkah selanjutnya.
3. Membuat Model dan Migration: Mendesain Struktur Database
Sekarang kita akan mendesain struktur database untuk project kita. Anggap saja kita ingin membuat aplikasi sederhana untuk menyimpan daftar buku. Kita akan membuat tabel books dengan kolom-kolom seperti title, author, dan description.
Untuk membuat model dan migration secara otomatis, gunakan perintah Artisan berikut:
php artisan make:model Book -m
Perintah ini akan membuat dua file:
app/Models/Book.php: Model untuk tabelbooks.database/migrations/xxxx_xx_xx_xxxxxx_create_books_table.php: Migration untuk membuat tabelbooks.
Buka file migration database/migrations/xxxx_xx_xx_xxxxxx_create_books_table.php dan modifikasi method up() seperti berikut:
<?php
use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;
class CreateBooksTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('books', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->string('author');
$table->text('description')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('books');
}
}
Kita menambahkan kolom title (string), author (string), dan description (text). Method nullable() pada kolom description memungkinkan kolom ini untuk menyimpan nilai NULL.
Setelah selesai memodifikasi migration, jalankan perintah berikut untuk membuat tabel books di database:
php artisan migrate
Selamat! Tabel books sudah berhasil dibuat.
4. Menggunakan Eloquent ORM: Berinteraksi dengan Database Melalui Model
Eloquent ORM adalah fitur powerful di Laravel yang memungkinkan kita berinteraksi dengan database menggunakan objek PHP. Ini membuat kode kita lebih mudah dibaca dan dipelihara.
Buka file app/Models/Book.php dan tambahkan kode berikut:
<?php
namespace AppModels;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;
class Book extends Model
{
use HasFactory;
protected $fillable = [
'title',
'author',
'description',
];
}
Properti $fillable menentukan kolom mana yang boleh diisi secara massal (mass assignment). Ini adalah praktik keamanan yang penting untuk mencegah celah keamanan.
Sekarang, mari kita coba berinteraksi dengan database menggunakan Eloquent. Kita akan membuat beberapa contoh:
Membuat Data Baru:
use AppModelsBook;
$book = new Book();
$book->title = 'Harry Potter and the Sorcerer's Stone';
$book->author = 'J.K. Rowling';
$book->description = 'The first book in the Harry Potter series.';
$book->save();
Atau, kita bisa menggunakan mass assignment:
use AppModelsBook;
$book = Book::create([
'title' => 'The Lord of the Rings',
'author' => 'J.R.R. Tolkien',
'description' => 'An epic high-fantasy novel.'
]);
Membaca Data:
use AppModelsBook;
// Mengambil semua data buku
$books = Book::all();
// Mengambil data buku dengan ID tertentu
$book = Book::find(1);
// Mengambil data buku berdasarkan kondisi
$books = Book::where('author', 'J.K. Rowling')->get();
Mengupdate Data:
use AppModelsBook;
$book = Book::find(1);
$book->title = 'Harry Potter and the Philosopher's Stone'; // Judul Inggris
$book->save();
Menghapus Data:
use AppModelsBook;
$book = Book::find(1);
$book->delete();
Contoh-contoh di atas menunjukkan betapa mudahnya berinteraksi dengan database menggunakan Eloquent.
5. Membuat Controller dan Route: Menghubungkan Data dengan Tampilan
Sekarang kita akan membuat controller dan route untuk menampilkan data buku di browser.
Jalankan perintah berikut untuk membuat controller BookController:
php artisan make:controller BookController
Buka file app/Http/Controllers/BookController.php dan tambahkan method index() untuk menampilkan daftar buku:
<?php
namespace AppHttpControllers;
use AppModelsBook;
use IlluminateHttpRequest;
class BookController extends Controller
{
public function index()
{
$books = Book::all();
return view('books.index', compact('books'));
}
}
Method index() mengambil semua data buku dari database dan mengirimkannya ke view books.index.
Selanjutnya, kita perlu membuat route untuk mengakses method index(). Buka file routes/web.php dan tambahkan route berikut:
use AppHttpControllersBookController;
use IlluminateSupportFacadesRoute;
Route::get('/books', [BookController::class, 'index']);
Route ini akan mengarahkan permintaan ke URL /books ke method index() di BookController.
6. Membuat View dengan Blade Templating: Menampilkan Data di Browser
Sekarang kita akan membuat view untuk menampilkan data buku di browser menggunakan Blade templating engine Laravel.
Buat folder books di dalam folder resources/views. Di dalam folder books, buat file index.blade.php dengan kode berikut:
<!DOCTYPE html>
<html>
<head>
<title>Daftar Buku</title>
</head>
<body>
<h1>Daftar Buku</h1>
<table>
<thead>
<tr>
<th>Judul</th>
<th>Penulis</th>
<th>Deskripsi</th>
</tr>
</thead>
<tbody>
@foreach ($books as $book)
<tr>
<td>{{ $book->title }}</td>
<td>{{ $book->author }}</td>
<td>{{ $book->description }}</td>
</tr>
@endforeach
</tbody>
</table>
</body>
</html>
Kode di atas menggunakan Blade directive @foreach untuk melakukan looping melalui setiap buku dan menampilkannya di tabel.
Sekarang, jalankan server pengembangan Laravel:
php artisan serve
Buka browser dan akses URL http://localhost:8000/books. Kamu akan melihat daftar buku yang ada di database.
7. Menambahkan Fitur Create, Read, Update, Delete (CRUD): Membangun Aplikasi Lebih Interaktif
CRUD (Create, Read, Update, Delete) adalah operasi dasar yang umumnya ada di setiap aplikasi database. Mari kita tambahkan fitur CRUD ke aplikasi kita.
Create (Membuat Data Baru):
-
Route:
Route::get('/books/create', [BookController::class, 'create']); Route::post('/books', [BookController::class, 'store']); -
Controller:
public function create() { return view('books.create'); } public function store(Request $request) { $request->validate([ 'title' => 'required', 'author' => 'required', ]); Book::create($request->all()); return redirect('/books'); } -
View (books/create.blade.php):
<form action="/books" method="POST"> @csrf <label for="title">Judul:</label><br> <input type="text" id="title" name="title"><br><br> <label for="author">Penulis:</label><br> <input type="text" id="author" name="author"><br><br> <label for="description">Deskripsi:</label><br> <textarea id="description" name="description"></textarea><br><br> <input type="submit" value="Simpan"> </form>
Read (Membaca Data): Kita sudah punya fitur ini di method index().
Update (Mengupdate Data):
-
Route:
Route::get('/books/{book}/edit', [BookController::class, 'edit']); Route::put('/books/{book}', [BookController::class, 'update']); -
Controller:
public function edit(Book $book) { return view('books.edit', compact('book')); } public function update(Request $request, Book $book) { $request->validate([ 'title' => 'required', 'author' => 'required', ]); $book->update($request->all()); return redirect('/books'); } -
View (books/edit.blade.php):
<form action="/books/{{ $book->id }}" method="POST"> @csrf @method('PUT') <label for="title">Judul:</label><br> <input type="text" id="title" name="title" value="{{ $book->title }}"><br><br> <label for="author">Penulis:</label><br> <input type="text" id="author" name="author" value="{{ $book->author }}"><br><br> <label for="description">Deskripsi:</label><br> <textarea id="description" name="description">{{ $book->description }}</textarea><br><br> <input type="submit" value="Simpan"> </form>
Delete (Menghapus Data):
-
Route:
Route::delete('/books/{book}', [BookController::class, 'destroy']); -
Controller:
public function destroy(Book $book) { $book->delete(); return redirect('/books'); } -
Tambahkan Form Delete di View
books/index.blade.php:<td> <form action="/books/{{ $book->id }}" method="POST"> @csrf @method('DELETE') <button type="submit">Hapus</button> </form> </td>
Jangan lupa tambahkan link “Edit” dan “Hapus” di view books/index.blade.php untuk memudahkan akses ke fitur edit dan delete. Dengan menambahkan fitur CRUD, aplikasi kita menjadi lebih interaktif dan berguna.
8. Validasi Data: Menjamin Kualitas Data yang Disimpan
Validasi data adalah proses memeriksa apakah data yang dimasukkan pengguna memenuhi kriteria tertentu sebelum disimpan ke database. Ini sangat penting untuk memastikan kualitas data dan mencegah kesalahan.
Kita sudah menggunakan validasi sederhana di method store() dan update() pada BookController:
$request->validate([
'title' => 'required',
'author' => 'required',
]);
Ini memastikan bahwa kolom title dan author wajib diisi. Laravel menyediakan berbagai aturan validasi yang bisa kamu gunakan, seperti email, min, max, unique, dan lain-lain. Kamu bisa melihat daftar lengkap aturan validasi di dokumentasi Laravel: https://laravel.com/docs/validation
Selain itu, kamu juga bisa membuat aturan validasi kustom jika aturan bawaan tidak memenuhi kebutuhanmu. Dengan validasi data yang tepat, kamu bisa memastikan bahwa data yang disimpan di database selalu berkualitas dan valid.
9. Menggunakan Seeder: Mengisi Database dengan Data Dummy
Seeder adalah cara yang mudah untuk mengisi database dengan data dummy untuk keperluan testing atau pengembangan.
Jalankan perintah berikut untuk membuat seeder BookSeeder:
php artisan make:seeder BookSeeder
Buka file database/seeders/BookSeeder.php dan modifikasi method run() seperti berikut:
<?php
namespace DatabaseSeeders;
use AppModelsBook;
use IlluminateDatabaseSeeder;
class BookSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Book::create([
'title' => 'The Hitchhiker's Guide to the Galaxy',
'author' => 'Douglas Adams',
'description' => 'A comedy science fiction series.'
]);
Book::create([
'title' => 'Pride and Prejudice',
'author' => 'Jane Austen',
'description' => 'A romantic novel of manners.'
]);
// Tambahkan data dummy lainnya di sini
}
}
Selanjutnya, buka file database/seeders/DatabaseSeeder.php dan tambahkan kode berikut di method run():
<?php
namespace DatabaseSeeders;
use IlluminateDatabaseSeeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call([
BookSeeder::class,
]);
}
}
Terakhir, jalankan seeder:
php artisan db:seed
Perintah ini akan menjalankan semua seeder yang terdaftar, termasuk BookSeeder, dan mengisi database dengan data dummy.
10. Menggunakan Pagination: Menampilkan Data dalam Halaman-halaman
Jika kamu memiliki banyak data, menampilkan semuanya dalam satu halaman akan membuat tampilan menjadi berat dan sulit dibaca. Pagination memungkinkan kamu membagi data ke dalam halaman-halaman yang lebih kecil dan mudah dinavigasi.
Untuk menggunakan pagination di Laravel, cukup ganti method all() dengan method paginate() di BookController:
public function index()
{
$books = Book::paginate(10); // Menampilkan 10 buku per halaman
return view('books.index', compact('books'));
}
Selanjutnya, tambahkan link pagination di view books/index.blade.php:
{{ $books->links() }}
Directive $books->links() akan secara otomatis membuat link pagination. Sekarang, data buku akan ditampilkan dalam halaman-halaman, dengan 10 buku per halaman.
11. Tips dan Trik Pengembangan Laravel untuk Pemula: Meningkatkan Produktivitas
Berikut beberapa tips dan trik yang bisa membantu kamu meningkatkan produktivitas saat mengembangkan aplikasi Laravel:
- Gunakan Artisan Console: Artisan adalah command-line interface yang disediakan oleh Laravel. Ia menyediakan banyak perintah yang berguna untuk membuat file, menjalankan migration, seeding database, dan lain-lain. Manfaatkan Artisan untuk mempercepat proses pengembanganmu.
- Pelajari Blade Templating Engine: Blade adalah templating engine yang kuat dan mudah digunakan. Ia menyediakan berbagai directive yang memudahkan kamu membuat tampilan yang dinamis.
- Manfaatkan Package Laravel: Laravel memiliki ekosistem package yang luas. Ada banyak package yang bisa kamu gunakan untuk menambahkan fitur-fitur tertentu ke aplikasimu tanpa harus menulis kode dari awal.
- Ikuti Standar Coding: Ikuti standar coding PSR (PHP Standards Recommendations) untuk memastikan kode yang kamu tulis bersih, mudah dibaca, dan mudah dipelihara.
- Gunakan Debugging Tools: Laravel menyediakan berbagai debugging tools yang bisa membantu kamu menemukan dan memperbaiki bug dengan cepat. Gunakan
dd()(dump and die) untuk memeriksa nilai variabel danDebugbaruntuk memantau query database, memory usage, dan lain-lain. - Bergabung dengan Komunitas Laravel: Bergabung dengan komunitas Laravel dan jangan ragu untuk bertanya jika kamu mengalami kesulitan. Ada banyak developer Laravel yang siap membantu.
12. Kesimpulan: Langkah Selanjutnya dalam Belajar Laravel
Selamat! Kamu telah berhasil membuat contoh project Laravel sederhana dengan implementasi database untuk pemula. Kita telah mempelajari langkah demi langkah, mulai dari setup awal, membuat model dan migration, menggunakan Eloquent ORM, membuat controller dan route, hingga menampilkan data di browser.
Ini hanyalah permulaan. Masih banyak hal yang bisa kamu pelajari tentang Laravel. Berikut beberapa langkah selanjutnya yang bisa kamu lakukan:
- Pelajari tentang Authentication dan Authorization: Pelajari cara mengamankan aplikasimu dengan sistem otentikasi dan otorisasi.
- Pelajari tentang Testing: Pelajari cara menulis unit test dan integration test untuk memastikan kualitas kode yang kamu tulis.
- Pelajari tentang Queues: Pelajari cara menggunakan queues untuk memproses tugas-tugas berat di background.
- Pelajari tentang API Development: Pelajari cara membuat API dengan Laravel.
- Bangun Project yang Lebih Kompleks: Cobalah bangun project yang lebih kompleks untuk mempraktikkan semua yang telah kamu pelajari.
Jangan takut untuk bereksperimen dan terus belajar. Dengan ketekunan dan latihan, kamu akan menjadi seorang developer Laravel yang handal. Selamat berkarya!









