Days
Hours
Minutes
Seconds

Promo Grand Opening

15% OFF

Khusus Pelanggan Baru

Tutorial Laravel #11: CRUD Laravel – Update Data Di Database

 

 

Tutorial ini akan memandu Anda dalam mengimplementasikan fungsionalitas Update dalam konsep CRUD (Create, Read, Update, Delete) di Laravel. Anda akan belajar cara membuat form untuk mengedit data dan menyimpannya kembali ke database.


 

Langkah 1: Persiapan

 

Pastikan Anda memiliki model Product dan controller ProductController yang telah kita gunakan di tutorial sebelumnya. Juga, pastikan tabel products memiliki data untuk diuji.

 

Langkah 2: Menambahkan Metode edit dan update di Controller

 

Kita akan menambahkan dua metode baru di ProductController. Metode edit akan menampilkan form yang sudah terisi dengan data yang akan diedit, sedangkan metode update akan memproses data yang di-submit dari form dan menyimpannya ke database.

Buka file app/Http/Controllers/ProductController.php dan tambahkan atau lengkapi metode edit dan update seperti di bawah ini:

PHP

<?php

namespace App\Http\Controllers;

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

class ProductController extends Controller
{
    // ... metode index() dan create()...

    /**
     * Show the form for editing the specified resource.
     */
    public function edit(Product $product)
    {
        return view('products.edit', compact('product'));
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, Product $product)
    {
        // 1. Validasi input
        $validatedData = $request->validate([
            'name' => 'required|max:255',
            'description' => 'required',
        ]);

        // 2. Perbarui data
        $product->update($validatedData);

        // 3. Redirect kembali dengan pesan sukses
        return redirect()->route('products.index')->with('success', 'Produk berhasil diperbarui!');
    }

    // ... metode resource lainnya ...
}

 

Penjelasan Kode

 

  • edit(Product $product):
    • Laravel secara otomatis menemukan produk berdasarkan ID yang ada di URL dan mengikatnya ke parameter $product. Ini dikenal sebagai Route Model Binding, fitur yang sangat kuat dari Laravel.
    • Metode ini hanya mengembalikan view bernama products.edit dan meneruskan objek $product ke view tersebut.
  • update(Request $request, Product $product):
    • Metode ini menerima data form ($request) dan objek $product yang telah diikat.
    • $request->validate(...): Proses validasi sama seperti pada metode store, memastikan data yang di-submit valid.
    • $product->update($validatedData);: Ini adalah cara paling efisien untuk memperbarui data di Laravel. Metode update() menerima array data dan secara otomatis memperbarui kolom-kolom yang sesuai di database.
    • return redirect()->route(...): Setelah data diperbarui, pengguna dialihkan kembali ke halaman daftar produk dengan pesan sukses.

 

Langkah 3: Membuat View untuk Form Edit

 

Sekarang, buat file baru edit.blade.php di dalam direktori resources/views/products/. View ini akan mirip dengan view create, tetapi sudah terisi dengan data yang ada.

resources/views/products/edit.blade.php:

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Edit Produk</title>
</head>
<body>
    <h1>Edit Produk</h1>

    @if ($errors->any())
        <div>
            <ul>
                @foreach ($errors->all() as $error)
                    <li>{{ $error }}</li>
                @endforeach
            </ul>
        </div>
    @endif

    <form action="{{ route('products.update', $product->id) }}" method="POST">
        @csrf
        @method('PUT')
        
        <div>
            <label for="name">Nama Produk:</label>
            <input type="text" id="name" name="name" value="{{ old('name', $product->name) }}">
        </div>
        <br>
        <div>
            <label for="description">Deskripsi Produk:</label>
            <textarea id="description" name="description">{{ old('description', $product->description) }}</textarea>
        </div>
        <br>
        <button type="submit">Perbarui</button>
    </form>
</body>
</html>

 

Penjelasan Kode

 

  • <form action="{{ route('products.update', $product->id) }}" method="POST">: Atribut action menggunakan route() untuk menghasilkan URL ke metode update dengan ID produk.
  • @method('PUT'): Ini adalah direktif Blade yang sangat penting. Karena form HTML hanya mendukung metode GET dan POST, direktif ini menghasilkan input tersembunyi yang memberi tahu Laravel bahwa permintaan ini seharusnya ditangani sebagai permintaan PUT.
  • value="{{ old('name', $product->name) }}": Fungsi old() sekarang memiliki parameter kedua. Jika validasi gagal, ia akan menggunakan nilai yang di-submit sebelumnya (old('name')). Jika tidak ada nilai lama (misalnya, saat pertama kali membuka halaman edit), ia akan menggunakan nilai dari database ($product->name).

 

Langkah 4: Menambahkan Link ke Form Edit

 

Anda perlu menambahkan link atau tombol di view daftar produk (misalnya, resources/views/products/index.blade.php) agar pengguna bisa mengakses form edit.

Tambahkan kode ini di dalam loop @foreach di view index.blade.php:

HTML

...
<td>
    <a href="{{ route('products.edit', $product->id) }}">Edit</a>
</td>
...

 

Mengakses Halaman

 

  • Akses URL http://localhost:8000/products untuk melihat daftar produk.
  • Klik link “Edit” di samping produk yang ingin Anda perbarui.
  • Anda akan dialihkan ke halaman edit yang menampilkan data produk.
  • Ubah data di form dan klik “Perbarui”.
  • Anda akan kembali ke halaman daftar produk dengan data yang sudah diperbarui.

Selamat! Anda telah berhasil mengimplementasikan operasi Update dalam CRUD Laravel.

Wawasan Terbaru

Gemini_Generated_Image_wfw5uwwfw5uwwfw5
Mengenal Dunia Grafis: Dari Piksel Hingga Vektor, Kekuatan Visual di Era Digital
Gemini_Generated_Image_b6dimfb6dimfb6di
Mengenal Foundation: Kerangka Kerja Front-End Profesional untuk Web Responsif
Gemini_Generated_Image_sx3ztpsx3ztpsx3z
CSS
Mempercantik Website dengan CSS: Seniman di Balik Tampilan Web 🎨
Gemini_Generated_Image_e013qke013qke013
Mengenal HTML: Fondasi dari Setiap Halaman Website 🌐
Gemini_Generated_Image_ldki4nldki4nldki
Menyelami Dunia Coding: Seni Berbicara dengan Komputer
Gemini_Generated_Image_dpvliydpvliydpvl
Menguasai GIT: Fondasi Penting dalam Dunia Pengembangan Perangkat Lunak
Gemini_Generated_Image_sqcib9sqcib9sqci
Tutorial Python #12: Mengenal Jenis-jenis Operator dalam Python
Gemini_Generated_Image_o1bw3do1bw3do1bw
Memahami Tipe Data Dictionary dalam Python
Gemini_Generated_Image_ko4ixfko4ixfko4i
Mengenal Tipe Data Set dalam Python
Gemini_Generated_Image_1xop7m1xop7m1xop
Tuple dalam Python: Pengenalan dan Tutorial

Wawasan Serupa

Gemini_Generated_Image_q0o3sbq0o3sbq0o3
Gemini_Generated_Image_mem6cgmem6cgmem6
Gemini_Generated_Image_ust09gust09gust0
Gemini_Generated_Image_d8a5kwd8a5kwd8a5

Ceritakan Detail Proyekmu

Mulai dari 30K aja, solusi IT kamu langsung jalan tanpa drama.

Kata Mereka Tentang Solusi Coding

Dipercaya oleh lebih dari 200++ client untuk menyelesaikan proyeknya dengan total 250++ proyek dari berbagai jenis proyek