Cara Membuat CRUD Laravel Lengkap (Migration, Model, Controller)

CRUD (Create, Read, Update, Delete) adalah inti hampir setiap aplikasi. Di Laravel, membuat CRUD jauh lebih rapi berkat Migration, Eloquent, dan Blade. Artikel ini membahas cara membuat CRUD Laravel lengkap untuk mengelola data produk, dengan kode utuh.

Komponen CRUD di Laravel
Komponen CRUD di Laravel

Langkah 1: Membuat Migration (Tabel)

Migration adalah “cetak biru” tabel database. Buat migration untuk tabel produk:

php artisan make:migration create_produks_table

Buka file migration di database/migrations/, lalu isi kolomnya:

<?php
public function up(): void
{
    Schema::create('produks', function (Blueprint $table) {
        $table->id();
        $table->string('nama');
        $table->integer('harga');
        $table->text('deskripsi')->nullable();
        $table->timestamps();
    });
}
?>

Jalankan migration untuk membuat tabel di database:

php artisan migrate

Langkah 2: Membuat Model

php artisan make:model Produk

Buka app/Models/Produk.php, izinkan kolom diisi massal:

<?php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Produk extends Model
{
    protected $fillable = ['nama', 'harga', 'deskripsi'];
}
?>

Langkah 3: Membuat Controller

php artisan make:controller ProdukController --resource

Isi app/Http/Controllers/ProdukController.php:

<?php
namespace App\Http\Controllers;

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

class ProdukController extends Controller
{
    public function index() {
        $produks = Produk::latest()->get();
        return view('produk.index', compact('produks'));
    }

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

    public function store(Request $request) {
        $request->validate([
            'nama'  => 'required',
            'harga' => 'required|integer',
        ]);
        Produk::create($request->all());
        return redirect('/produk')->with('sukses', 'Data tersimpan!');
    }

    public function edit(Produk $produk) {
        return view('produk.edit', compact('produk'));
    }

    public function update(Request $request, Produk $produk) {
        $produk->update($request->all());
        return redirect('/produk')->with('sukses', 'Data diperbarui!');
    }

    public function destroy(Produk $produk) {
        $produk->delete();
        return redirect('/produk')->with('sukses', 'Data dihapus!');
    }
}
?>

Langkah 4: Membuat Route

Di routes/web.php, cukup satu baris untuk semua rute CRUD:

<?php
use App\Http\Controllers\ProdukController;

Route::resource('produk', ProdukController::class);
?>

Langkah 5: Membuat View (Blade)

Buat resources/views/produk/index.blade.php untuk menampilkan data:

<a href="/produk/create">+ Tambah Produk</a>
@if (session('sukses'))
    <p style="color:green">{{ session('sukses') }}</p>
@endif
<table border="1">
    <tr><th>Nama</th><th>Harga</th><th>Aksi</th></tr>
    @foreach ($produks as $produk)
    <tr>
        <td>{{ $produk->nama }}</td>
        <td>{{ $produk->harga }}</td>
        <td>
            <a href="/produk/{{ $produk->id }}/edit">Edit</a>
            <form action="/produk/{{ $produk->id }}" method="POST" style="display:inline">
                @csrf @method('DELETE')
                <button onclick="return confirm('Hapus?')">Hapus</button>
            </form>
        </td>
    </tr>
    @endforeach
</table>

Form tambah (create.blade.php) memakai token keamanan @csrf:

<form action="/produk" method="POST">
    @csrf
    <input type="text" name="nama" placeholder="Nama" required>
    <input type="number" name="harga" placeholder="Harga" required>
    <button type="submit">Simpan</button>
</form>

Kesalahan Umum

  • “MassAssignmentException” — kolom belum didaftarkan di $fillable.
  • Error 419 (Page Expired) — lupa @csrf di form.
  • Method DELETE/PUT tidak jalan — lupa @method('DELETE') atau @method('PUT').

Kesimpulan

Anda telah membuat CRUD Laravel lengkap dengan Migration, Model Eloquent, Resource Controller, Route, dan View Blade. Pola ini adalah fondasi hampir semua aplikasi Laravel. Langkah berikutnya, tambahkan sistem login agar hanya pengguna terdaftar yang bisa mengelola data.

Referensi: untuk pendalaman, kunjungi dokumentasi resmi Laravel.

Baca Juga

Ali Akbar

Software Developer yang fokus mengembangkan aplikasi berbasis Web dan Desktop. Senang mempelajari teknologi baru terutama di bidang web design dan web development.

View all posts by Ali Akbar →

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *