Cara Edit dan Update Data MySQL Database di Laravel 8

wahyunanangwidodo

wahyunanangwidodo Jumat, 12 Maret 2021

Cara Edit dan Update Data MySQL Database di Laravel 8

Untuk melakukan edit ataupun update memperbaharui suatu data di laravel, kita perlu menentukan atau membuat parameter pada route yang kita definisikan.

Parameter tersebut dapat berupa index atau ID yang akan mengambil data dari suatu model. Mari kita lihat contoh dan penggunaannya.

Ini merupakan lanjutkan dari tutorial yang sudah dibuat sebelumnya. Jika tidak mengikuti tutorial sebelumnya dan ingin melihat cara penginstalan, konfigurasi awal dan pembuatan model, route, dan controller silahkan buka link dibawah, karena akan dilewati dan tidak ditulis ulang.

Sebelumnya: Belajar Laravel Pemula: Cara Menyimpan Data ke Database MySQL.

Membuat GET Route

Kita buat route baru dengan method GET dan menambahakan parameter untuk mengambil suatu data yang akan diperbaharui.

Buka web.php dan tambahkan route seperti dibawah ini.

Route::get('/post/edit/{id}', [PostController::class, 'edit']);

Membuat Method di Controller

Selanjutnya buat method baru di controller dengan nama yang sama di panggilan route dan dengan menambahakan parameter, seperti dibawah ini.

//PostController.php
public function edit($id)
{
  $post = Post::findOrFail($id);
  return response()->json($post, 200); 
}

Kita membuat permintaan ke Model untuk menampilkan data sesuai parameter, yaitu ID dari Post. Kita akan coba membuat request melalui Postman dengan membuat response berupa json.

Jalankan php artisan serve kemudian buka postman dan buat request seperti gambar dibwawah ini.

Cara Edit dan Update Data MySQL Database di Laravel 8

Kita buat request untuk menampilkan data record menggunakan method GET dan url http://localhost:8000/post/edit/1 lalu kirim. Angka 1 pada url merupakan ID dari data record yang ada di database.

Kita membuat request mengambil data post ini adalah untuk menampilkan value yang ada pada form input yang akan kita buat.

Membuat Html Form Edit

Mari kita lanjutkan dengan membuat sebuah halaman untuk form edit. Kita buat file baru pada direktori views dengan nama edit.blade.php dan copas html form dan input dibawah ini.

//views/post/edit.blade.php
@extends('layouts.app')

@section('title', 'Post Edit')

@section('content')

  <form method="POST" action="{{ url('post/update', $post->id ) }}">
    @csrf
    <input name="title" value="{{ $post->title }}" type="text" placeholder="Title..."> 
    <input name="body" value="{{ $post->body }}" type="text" placeholder="Body...">
    <button>Submit</button>
  </form>
  
@endsection

Pada form diatas, kita gunakan method POST dan action ke URI post/update dengan menambahkan parameter berupa ID. Kemudian pada elemen input kita definisikan properti atau field dari tabel di database degan atribut name dan menampilkan value yang ada / old value dengan atribut value.

Setelah html form dibuat, kita akan buka pada browser. Namun sebelum itu kita buka terlebih dahulu PostController.php untuk merubah response yang ada pada method edit() dengan mengalihkan ke view halaman edit, seperti dibawah ini.

public function edit($id)
{
    $post = Post::findOrFail($id);

    return view('post.edit', [
            'post' = $post
    ]);
}

Setelah diubah, kita bisa lihat pada browser dengan membuka http://localhost:8000/post/edit/1; yang hasilnya seperti gambar berikut.

Cara Edit dan Update Data MySQL Database di Laravel 8

Membuat Update Route

Selanjutnya kita buat route baru sesuai yang kita tambahkan pada form action diatas. Kita buka kembali web.php lalu tambahkan route di bawah ini.

Route::post('/post/update/{id}', [PostController::class, 'update']);

Tambahkan Method di Controller

Kemudian kita buat method update() di controller seperti dibawah ini.

public function update(Request $request, $id)
{
   $post = Post::find($id)->update($request->all()); 
         
   return back()->with('success',' Data telah diperbaharui!');
}

Setelah melakukan submit, kita buat untuk kembali ke halaman yang ada dengan memberikan pesan. Untuk menampilkan pesan tersebut, kita perlu menambahakan pesan sesi pada halaman edit.

Silahkan buka edit.blade.php dan tambahkan dibawah ini.

@section('content')

@if ($message = Session::get('success'))
   <p>{{ $message }}</p>
@endif
    
...

@endsection

Sampai disini silahkan mencobanya. Hasilnya akan seperti gambar dibawah ini.

Cara Edit dan Update Data MySQL Database di Laravel 8

Kita juga bisa mengalihan ke halaman lain atau url lain setelah submit dengan membuat redirect response seperti dibawah ini.

return redirect('/');

return redirect()->route('home');

Selesai

Kita telah melihat bagimana cara melakukan edit data di laravel, html form yang dibuat diatas hanya sekedar contoh tanpa penambahan css / style. Jika ingin menambahkan style atau ingin menggunakan css framework bootstap, silahkan buka Cara Install Bootstrap di Laravel 8 untuk cara penginstalan dan penggunaan.

Silahkan dicoba.

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel

Berlangganan

Berlangganan untuk mendapat pemberitahuan artikel terbaru via email.