CRUD adalah dasar dari hampir semua sistem manajemen data: toko online, aplikasi kepegawaian, inventaris barang, dan banyak lagi. Laravel menawarkan cara paling efisien dan rapi untuk melakukan CRUD dengan Eloquent ORM dan resource controller.
📦 Studi Kasus: Manajemen Data Produk
Kolom yang akan kita kelola:
id
(otomatis)nama
(string)stok
(integer)harga
(integer)
🧱 1. Buat Model & Migration
php artisan make:model Produk -m
Isi file migration database/migrations/xxxx_create_produks_table.php
:
public function up(): void {
Schema::create('produks', function (Blueprint $table) {
$table->id();
$table->string('nama');
$table->integer('stok');
$table->integer('harga');
$table->timestamps();
});
}
Lalu migrasi:
php artisan migrate
🧭 2. Buat Controller CRUD
php artisan make:controller ProdukController --resource
🔁 3. Routing Resource
Edit routes/web.php
:
use App\Http\Controllers\ProdukController;
Route::resource('produk', ProdukController::class);
🖥️ 4. Buat View Blade
a. Index – Tampilkan Data
resources/views/produk/index.blade.php
:
<a href="{{ route('produk.create') }}">Tambah Produk</a>
<table>
<thead>
<tr>
<th>Nama</th><th>Stok</th><th>Harga</th><th>Aksi</th>
</tr>
</thead>
<tbody>
@foreach($produk as $p)
<tr>
<td>{{ $p->nama }}</td>
<td>{{ $p->stok }}</td>
<td>{{ $p->harga }}</td>
<td>
<a href="{{ route('produk.edit', $p->id) }}">Edit</a>
<form method="POST" action="{{ route('produk.destroy', $p->id) }}">
@csrf @method('DELETE')
<button>Hapus</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
b. Create & Edit Form
create.blade.php
dan edit.blade.php
bisa menggunakan form yang sama dengan sedikit penyesuaian:
<form action="{{ isset($produk) ? route('produk.update', $produk->id) : route('produk.store') }}" method="POST">
@csrf
@if(isset($produk)) @method('PUT') @endif
<input type="text" name="nama" value="{{ $produk->nama ?? '' }}" placeholder="Nama Produk" required>
<input type="number" name="stok" value="{{ $produk->stok ?? '' }}" placeholder="Stok" required>
<input type="number" name="harga" value="{{ $produk->harga ?? '' }}" placeholder="Harga" required>
<button type="submit">{{ isset($produk) ? 'Update' : 'Simpan' }}</button>
</form>
🧠 5. Logika di ProdukController.php
use App\Models\Produk;
public function index() {
$produk = Produk::all();
return view('produk.index', compact('produk'));
}
public function create() {
return view('produk.create');
}
public function store(Request $request) {
$request->validate([
'nama' => 'required',
'stok' => 'required|integer',
'harga' => 'required|integer'
]);
Produk::create($request->all());
return redirect()->route('produk.index');
}
public function edit($id) {
$produk = Produk::findOrFail($id);
return view('produk.edit', compact('produk'));
}
public function update(Request $request, $id) {
$produk = Produk::findOrFail($id);
$produk->update($request->all());
return redirect()->route('produk.index');
}
public function destroy($id) {
Produk::destroy($id);
return redirect()->route('produk.index');
}
📚 6. Tips & Best Practice
Aspek | Rekomendasi |
---|---|
Validasi | Gunakan Request class jika CRUD kompleks |
Form Reusable | Gunakan komponen blade untuk form input |
Error Handling | Tangani findOrFail dan validasi input |
UX | Tambahkan notifikasi sukses/gagal dengan session flash |
🚀 Lanjut ke Fitur CRUD Lebih Lanjut
Setelah CRUD dasar, kamu bisa lanjut ke:
- CRUD Ajax + DataTables
- CRUD API (JSON)
- Upload Gambar di Form Produk
- Soft Delete dan Restore
- Pagination dan Search
🧰 Elektra Network Vision – Konsultan CRUD & Sistem Laravel
Kami bantu:
- Membangun dashboard CRUD Laravel
- Menyusun manajemen data kompleks
- Integrasi API, autentikasi, dan laporan PDF/Excel
🌐 elektranetworkvision.com — Konsultan Laravel Indonesia, siap bantu skala bisnis Anda.