Laravel 9, sebagai salah satu framework PHP paling populer, menawarkan kemudahan dan kecepatan dalam pengembangan aplikasi web. Salah satu fungsi dasar yang hampir selalu ada dalam aplikasi web adalah CRUD (Create, Read, Update, Delete). Artikel ini akan memandu Anda langkah demi langkah tentang cara membuat CRUD dengan Laravel 9, memungkinkan Anda menciptakan aplikasi web dinamis dengan cepat dan efisien. Kita akan membahas mulai dari persiapan lingkungan, pembuatan model, migration, controller, hingga implementasi view. Siap untuk memulai petualangan Laravel Anda? Mari kita mulai!
1. Persiapan Awal: Menginstal Laravel 9 dan Konfigurasi Database
Sebelum kita mulai membuat CRUD dengan Laravel 9, kita perlu memastikan bahwa lingkungan pengembangan kita sudah siap. Ini termasuk menginstal Laravel 9 dan mengkonfigurasi koneksi ke database.
-
Instalasi Laravel 9: Jika Anda belum memiliki Laravel terinstal, Anda dapat menginstalnya menggunakan Composer, package manager untuk PHP. Buka terminal Anda dan jalankan perintah berikut:
composer create-project laravel/laravel nama-aplikasi cd nama-aplikasiGanti
nama-aplikasidengan nama yang Anda inginkan untuk proyek Anda. -
Konfigurasi Database: Setelah instalasi selesai, buka file
.envdi direktori proyek Anda. Cari bagian yang berhubungan dengan database dan sesuaikan dengan informasi database Anda. Contohnya:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=nama_database DB_USERNAME=username_database DB_PASSWORD=password_databasePastikan Anda membuat database dengan nama yang sesuai di server database Anda.
-
Menjalankan Server Pengembangan: Untuk menjalankan server pengembangan Laravel, gunakan perintah berikut:
php artisan serveAplikasi Anda akan berjalan di
http://127.0.0.1:8000.
2. Membuat Model dan Migration untuk Struktur Data
Langkah selanjutnya dalam cara membuat CRUD dengan Laravel 9 adalah mendefinisikan struktur data kita. Dalam contoh ini, kita akan membuat CRUD untuk data “Artikel”. Kita membutuhkan model dan migration untuk mendefinisikan tabel articles di database.
-
Membuat Model: Laravel menyediakan Artisan command untuk membuat model dengan mudah:
php artisan make:model ArticleIni akan membuat file
Article.phpdi direktoriapp/Models. -
Membuat Migration: Kita juga membutuhkan migration untuk membuat tabel di database. Gunakan perintah berikut:
php artisan make:migration create_articles_tableIni akan membuat file migration di direktori
database/migrations. Buka file migration tersebut dan definisikan skema tabelarticles. Contohnya:<?php use IlluminateDatabaseMigrationsMigration; use IlluminateDatabaseSchemaBlueprint; use IlluminateSupportFacadesSchema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('articles', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('content'); $table->timestamps(); }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('articles'); } };Di sini, kita mendefinisikan tabel
articlesdengan kolomid,title,content, dantimestamps. -
Menjalankan Migration: Setelah mendefinisikan migration, jalankan perintah berikut untuk membuat tabel di database:
php artisan migratePerintah ini akan menjalankan semua migration yang belum dijalankan.
3. Membuat Controller untuk Logika CRUD
Controller bertugas menangani logika bisnis aplikasi kita. Dalam cara membuat CRUD dengan Laravel 9, controller akan menangani operasi Create, Read, Update, dan Delete untuk data artikel.
-
Membuat Controller: Gunakan Artisan command untuk membuat controller:
php artisan make:controller ArticleController --resourceOpsi
--resourceakan membuat controller dengan semua method yang dibutuhkan untuk operasi CRUD (index, create, store, show, edit, update, destroy). FileArticleController.phpakan dibuat di direktoriapp/Http/Controllers. -
Implementasi Method Controller: Buka file
ArticleController.phpdan implementasikan method-method CRUD.-
index()(Menampilkan Daftar Artikel):public function index() { $articles = Article::all(); // Atau gunakan paginate() untuk paginasi return view('articles.index', compact('articles')); } -
create()(Menampilkan Form Pembuatan Artikel):public function create() { return view('articles.create'); } -
store()(Menyimpan Artikel Baru):public function store(Request $request) { $request->validate([ 'title' => 'required|max:255', 'content' => 'required', ]); Article::create($request->all()); return redirect()->route('articles.index') ->with('success', 'Artikel berhasil ditambahkan.'); }Jangan lupa tambahkan
use IlluminateHttpRequest;danuse AppModelsArticle;di bagian atas file controller. -
show()(Menampilkan Detail Artikel):public function show(Article $article) { return view('articles.show', compact('article')); } -
edit()(Menampilkan Form Edit Artikel):public function edit(Article $article) { return view('articles.edit', compact('article')); } -
update()(Mengupdate Artikel):public function update(Request $request, Article $article) { $request->validate([ 'title' => 'required|max:255', 'content' => 'required', ]); $article->update($request->all()); return redirect()->route('articles.index') ->with('success', 'Artikel berhasil diupdate.'); } -
destroy()(Menghapus Artikel):public function destroy(Article $article) { $article->delete(); return redirect()->route('articles.index') ->with('success', 'Artikel berhasil dihapus.'); }
-
4. Membuat View untuk Tampilan CRUD
View adalah bagian dari aplikasi kita yang menampilkan data ke pengguna. Dalam cara membuat CRUD dengan Laravel 9, kita akan membuat view untuk menampilkan daftar artikel, form pembuatan, form edit, dan detail artikel.
-
Membuat Direktori View: Buat direktori
articlesdi dalam direktoriresources/viewsuntuk menyimpan semua view yang berhubungan dengan artikel. -
Membuat File View: Buat file-file berikut di dalam direktori
resources/views/articles:-
index.blade.php(Daftar Artikel):<!DOCTYPE html> <html> <head> <title>Daftar Artikel</title> </head> <body> <h1>Daftar Artikel</h1> @if ($message = Session::get('success')) <p>{{ $message }}</p> @endif <a href="{{ route('articles.create') }}">Tambah Artikel Baru</a> <table> <thead> <tr> <th>Judul</th> <th>Aksi</th> </tr> </thead> <tbody> @foreach ($articles as $article) <tr> <td>{{ $article->title }}</td> <td> <a href="{{ route('articles.show', $article->id) }}">Lihat</a> <a href="{{ route('articles.edit', $article->id) }}">Edit</a> <form action="{{ route('articles.destroy', $article->id) }}" method="POST"> @csrf @method('DELETE') <button type="submit">Hapus</button> </form> </td> </tr> @endforeach </tbody> </table> </body> </html> -
create.blade.php(Form Pembuatan Artikel):<!DOCTYPE html> <html> <head> <title>Tambah Artikel Baru</title> </head> <body> <h1>Tambah Artikel Baru</h1> @if ($errors->any()) <div> <strong>Whoops!</strong> Ada kesalahan dalam input Anda.<br><br> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <form action="{{ route('articles.store') }}" method="POST"> @csrf <div> <label for="title">Judul:</label> <input type="text" name="title" id="title" value="{{ old('title') }}"> </div> <div> <label for="content">Konten:</label> <textarea name="content" id="content">{{ old('content') }}</textarea> </div> <button type="submit">Simpan</button> </form> <a href="{{ route('articles.index') }}">Kembali</a> </body> </html> -
show.blade.php(Detail Artikel):<!DOCTYPE html> <html> <head> <title>Detail Artikel</title> </head> <body> <h1>Detail Artikel</h1> <h2>{{ $article->title }}</h2> <p>{{ $article->content }}</p> <a href="{{ route('articles.index') }}">Kembali</a> </body> </html> -
edit.blade.php(Form Edit Artikel):<!DOCTYPE html> <html> <head> <title>Edit Artikel</title> </head> <body> <h1>Edit Artikel</h1> @if ($errors->any()) <div> <strong>Whoops!</strong> Ada kesalahan dalam input Anda.<br><br> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <form action="{{ route('articles.update', $article->id) }}" method="POST"> @csrf @method('PUT') <div> <label for="title">Judul:</label> <input type="text" name="title" id="title" value="{{ $article->title }}"> </div> <div> <label for="content">Konten:</label> <textarea name="content" id="content">{{ $article->content }}</textarea> </div> <button type="submit">Update</button> </form> <a href="{{ route('articles.index') }}">Kembali</a> </body> </html>
Sesuaikan tampilan view dengan kebutuhan aplikasi Anda.
-
5. Mendefinisikan Route untuk CRUD Artikel
Route menghubungkan URL dengan controller yang sesuai. Dalam cara membuat CRUD dengan Laravel 9, kita perlu mendefinisikan route untuk semua operasi CRUD artikel.
-
Menggunakan Resource Route: Laravel menyediakan
resourceroute yang secara otomatis membuat route untuk semua method CRUD dalam controller. Buka fileroutes/web.phpdan tambahkan baris berikut:Route::resource('articles', AppHttpControllersArticleController::class);Ini akan membuat route berikut:
GET /articles(index)GET /articles/create(create)POST /articles(store)GET /articles/{article}(show)GET /articles/{article}/edit(edit)PUT/PATCH /articles/{article}(update)DELETE /articles/{article}(destroy)
6. Validasi Data dan Keamanan
Validasi data sangat penting untuk memastikan data yang masuk ke database valid dan aman. Dalam cara membuat CRUD dengan Laravel 9, kita sudah menggunakan validasi di method store() dan update() dalam controller. Anda bisa menambahkan aturan validasi yang lebih kompleks sesuai kebutuhan.
Selain validasi, perhatikan juga keamanan aplikasi Anda. Gunakan middleware untuk melindungi route tertentu, gunakan fitur autentikasi dan otorisasi Laravel, dan selalu sanitasi input pengguna untuk mencegah serangan XSS dan SQL injection.
7. Implementasi Relasi Database (Opsional)
Jika aplikasi Anda melibatkan relasi antar tabel, Anda perlu mendefinisikan relasi tersebut di model. Misalnya, jika setiap artikel dimiliki oleh seorang penulis, Anda bisa menambahkan relasi belongsTo di model Article:
// app/Models/Article.php
public function author()
{
return $this->belongsTo(Author::class);
}
Kemudian, Anda bisa mengakses data penulis dari artikel:
$article = Article::find(1);
echo $article->author->name;
8. Menggunakan Eloquent ORM untuk Interaksi Database yang Lebih Mudah
Eloquent ORM (Object-Relational Mapper) adalah cara mudah untuk berinteraksi dengan database di Laravel. Kita sudah menggunakan Eloquent di controller untuk mengambil, menyimpan, mengupdate, dan menghapus data. Dengan Eloquent, Anda tidak perlu menulis query SQL secara manual.
9. Menambahkan Fitur Tambahan: Paginasi, Pencarian, dan Lainnya
Setelah berhasil membuat CRUD dengan Laravel 9, Anda bisa menambahkan fitur tambahan seperti paginasi, pencarian, dan lain-lain untuk meningkatkan pengalaman pengguna.
-
Paginasi: Untuk menampilkan daftar artikel dengan paginasi, gunakan method
paginate()di controller:public function index() { $articles = Article::paginate(10); // Menampilkan 10 artikel per halaman return view('articles.index', compact('articles')); }Kemudian, tambahkan link paginasi di view:
{{ $articles->links() }} -
Pencarian: Anda bisa menambahkan form pencarian di view dan memproses query pencarian di controller menggunakan Eloquent’s
where()clause.
10. Tips Optimasi SEO untuk Aplikasi CRUD Anda
Meskipun fokus utama kita adalah cara membuat CRUD dengan Laravel 9, penting juga untuk memperhatikan SEO (Search Engine Optimization) agar aplikasi kita mudah ditemukan oleh mesin pencari.
- Judul dan Deskripsi yang Relevan: Pastikan setiap halaman memiliki judul dan deskripsi meta yang relevan dengan konten.
- URL yang Bersih: Gunakan URL yang mudah dibaca dan mengandung kata kunci yang relevan.
- Internal Linking: Hubungkan antar halaman di aplikasi Anda untuk meningkatkan navigasi dan SEO.
- Optimasi Gambar: Kompres gambar dan gunakan atribut
altyang deskriptif. - Mobile-Friendly: Pastikan aplikasi Anda responsif dan mudah digunakan di perangkat mobile.
- Kecepatan Loading: Optimasi kode dan infrastruktur agar aplikasi Anda memiliki kecepatan loading yang baik.
11. Troubleshooting Masalah Umum saat Membuat CRUD
Dalam proses membuat CRUD dengan Laravel 9, Anda mungkin menghadapi beberapa masalah. Berikut beberapa troubleshooting umum:
- Error Database Connection: Pastikan informasi database di file
.envsudah benar. - Class Not Found: Pastikan Anda sudah mengimpor class yang dibutuhkan (misalnya,
use AppModelsArticle;). - Method Not Allowed: Pastikan Anda menggunakan method HTTP yang benar (GET, POST, PUT, DELETE) untuk route yang sesuai.
- View Not Found: Pastikan file view ada di direktori yang benar dan nama filenya sesuai.
- Error Validasi: Periksa aturan validasi di controller dan pastikan input pengguna memenuhi aturan tersebut.
12. Kesimpulan: Aplikasi Web Dinamis Berbasis CRUD dengan Laravel 9 di Tangan Anda
Selamat! Anda telah berhasil mempelajari cara membuat CRUD dengan Laravel 9. Dengan pengetahuan ini, Anda dapat membangun aplikasi web dinamis yang efisien dan terstruktur. Ingatlah untuk terus belajar dan bereksperimen dengan fitur-fitur Laravel lainnya untuk meningkatkan kemampuan pengembangan web Anda. Laravel 9 menawarkan banyak kemudahan dan fleksibilitas untuk membangun aplikasi web modern. Jangan ragu untuk menjelajahi dokumentasi resmi Laravel dan sumber daya online lainnya untuk memperdalam pengetahuan Anda. Selamat berkarya!









