Cara Membuat CRUD Lengkap di Laravel untuk Pemula

CRUD adalah singkatan dari Create, Read, Update, Delete โ€” empat operasi dasar yang hampir selalu ada di setiap aplikasi web. Di Laravel, membuat CRUD bisa dilakukan dengan sangat e...

Cara Membuat CRUD Lengkap di Laravel untuk Pemula

CRUD adalah singkatan dari Create, Read, Update, Delete โ€” empat operasi dasar yang hampir selalu ada di setiap aplikasi web. Di Laravel, membuat CRUD bisa dilakukan dengan sangat efisien berkat fitur seperti Eloquent ORM, Resource Controller, dan Blade templating. Artikel ini akan memandu kamu membuat CRUD lengkap dari awal menggunakan Laravel 10/11.

Persiapan Awal

Pastikan kamu sudah menginstal Laravel dan menyiapkan database. Buat project baru jika belum ada:

composer create-project laravel/laravel crud-demo
cd crud-demo
cp .env.example .env
php artisan key:generate

Atur koneksi database di file .env:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=crud_demo
DB_USERNAME=root
DB_PASSWORD=

Membuat Migration dan Model

Kita akan membuat fitur CRUD untuk data produk. Jalankan perintah berikut untuk membuat model beserta migrationnya sekaligus:

php artisan make:model Product -m

Buka file migration yang baru dibuat di folder database/migrations/ dan tambahkan kolom yang dibutuhkan:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    public function up(): void
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->text('description')->nullable();
            $table->decimal('price', 10, 2);
            $table->integer('stock')->default(0);
            $table->timestamps();
        });
    }

    public function down(): void
    {
        Schema::dropIfExists('products');
    }
};

Jalankan migration:

php artisan migrate

Mengisi Model Product

Buka app/Models/Product.php dan tambahkan properti $fillable:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    protected $fillable = ['name', 'description', 'price', 'stock'];
}

Membuat Resource Controller

Resource controller otomatis menyediakan method untuk semua operasi CRUD:

php artisan make:controller ProductController --resource --model=Product

Buka app/Http/Controllers/ProductController.php dan isi setiap method:

<?php

namespace App\Http\Controllers;

use App\Models\Product;
use Illuminate\Http\Request;

class ProductController extends Controller
{
    public function index()
    {
        $products = Product::latest()->paginate(10);
        return view('products.index', compact('products'));
    }

    public function create()
    {
        return view('products.create');
    }

    public function store(Request $request)
    {
        $request->validate([
            'name'  => 'required|string|max:255',
            'price' => 'required|numeric|min:0',
            'stock' => 'required|integer|min:0',
        ]);

        Product::create($request->all());

        return redirect()->route('products.index')
            ->with('success', 'Produk berhasil ditambahkan.');
    }

    public function show(Product $product)
    {
        return view('products.show', compact('product'));
    }

    public function edit(Product $product)
    {
        return view('products.edit', compact('product'));
    }

    public function update(Request $request, Product $product)
    {
        $request->validate([
            'name'  => 'required|string|max:255',
            'price' => 'required|numeric|min:0',
            'stock' => 'required|integer|min:0',
        ]);

        $product->update($request->all());

        return redirect()->route('products.index')
            ->with('success', 'Produk berhasil diperbarui.');
    }

    public function destroy(Product $product)
    {
        $product->delete();

        return redirect()->route('products.index')
            ->with('success', 'Produk berhasil dihapus.');
    }
}

Mendaftarkan Route

Buka routes/web.php dan daftarkan resource route:

use App\Http\Controllers\ProductController;

Route::resource('products', ProductController::class);

Satu baris ini otomatis mendaftarkan 7 route: index, create, store, show, edit, update, dan destroy.

Membuat View Blade

Buat folder resources/views/products/, lalu buat file index.blade.php:

@extends('layouts.app')

@section('content')
<div class="container">
    <h1>Daftar Produk</h1>
    <a href="{{ route('products.create') }}" class="btn btn-primary">Tambah Produk</a>

    @if(session('success'))
        <div class="alert alert-success mt-2">{{ session('success') }}</div>
    @endif

    <table class="table mt-3">
        <thead>
            <tr>
                <th>Nama</th>
                <th>Harga</th>
                <th>Stok</th>
                <th>Aksi</th>
            </tr>
        </thead>
        <tbody>
            @foreach($products as $product)
            <tr>
                <td>{{ $product->name }}</td>
                <td>Rp {{ number_format($product->price, 0, ',', '.') }}</td>
                <td>{{ $product->stock }}</td>
                <td>
                    <a href="{{ route('products.edit', $product) }}" class="btn btn-sm btn-warning">Edit</a>
                    <form action="{{ route('products.destroy', $product) }}" method="POST" style="display:inline">
                        @csrf
                        @method('DELETE')
                        <button class="btn btn-sm btn-danger">Hapus</button>
                    </form>
                </td>
            </tr>
            @endforeach
        </tbody>
    </table>
    {{ $products->links() }}
</div>
@endsection

Menjalankan Aplikasi

Setelah semua view dibuat (create.blade.php dan edit.blade.php dengan form yang sesuai), jalankan server:

php artisan serve

Akses http://localhost:8000/products untuk melihat hasilnya.

Kesimpulan

Kamu telah berhasil membuat fitur CRUD lengkap di Laravel menggunakan Resource Controller dan Eloquent ORM. Dengan pendekatan ini, kode menjadi terstruktur dan mudah dikembangkan. Langkah selanjutnya, kamu bisa menambahkan validasi yang lebih kompleks, upload gambar, atau membungkus CRUD ini dengan autentikasi menggunakan Laravel Breeze.

crud laravel laravel untuk pemula tutorial laravel membuat crud laravel laravel controller laravel resource
Bagikan artikel
Kembali

Komentar (0)

Punya pertanyaan atau tambahan? Tulis di bawah โ€” tak perlu login.

Membalas komentarโ€ฆ batal

Belum ada komentar. Jadilah yang pertama!

๐Ÿš€ Partner Recommendation

Butuh Source Code & Aplikasi Premium?

Download aplikasi Laravel, POS, Sekolah, Klinik, ERP, dan source code siap pakai di GudangCode.

GudangCode
  • โœ” Source Code Premium
  • โœ” Sistem Siap Pakai
  • โœ” Lifetime Update
  • โœ” Membership Lifetime
  • โœ” Update Aplikasi Harian
Daftar Membership โ†’