Halo teman-teman semuanya, di artikel sebelumnya kita telah belajar bagaimana cara membuat proses edit dan update data di Laravel 9. Sekarang kita lanjutkan belajar bagaimana cara membuat fitur delete data di Laravel 9.
Disini kita tidak hanya melakukan delete data yang ada di dalam database, tapi juga menghapus gambar yang terkait dengan data yang kita hapus. Dan disini kita hanya membutuhkan 1 method untuk proses delete data di Laravel 9.
Langkah 1 - Menambahkan Method Destroy
Sekarang, kita akan menambahkan method baaru yang bernama destroy
di dalam controller post. Silahkan buka file app/Http/Controllers/PostController.php
, kemudian ubah semua kode-nya menjadi seperti berikut ini :
<?php
namespace App\Http\Controllers;
use App\Models\Post;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
class PostController extends Controller
{
/**
* index
*
* @return void
*/
public function index()
{
//get posts
$posts = Post::latest()->paginate(5);
//render view with posts
return view('posts.index', compact('posts'));
}
/**
* create
*
* @return void
*/
public function create()
{
return view('posts.create');
}
/**
* store
*
* @param Request $request
* @return void
*/
public function store(Request $request)
{
//validate form
$this->validate($request, [
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'title' => 'required|min:5',
'content' => 'required|min:10'
]);
//upload image
$image = $request->file('image');
$image->storeAs('public/posts', $image->hashName());
//create post
Post::create([
'image' => $image->hashName(),
'title' => $request->title,
'content' => $request->content
]);
//redirect to index
return redirect()->route('posts.index')->with(['success' => 'Data Berhasil Disimpan!']);
}
/**
* edit
*
* @param mixed $post
* @return void
*/
public function edit(Post $post)
{
return view('posts.edit', compact('post'));
}
/**
* update
*
* @param mixed $request
* @param mixed $post
* @return void
*/
public function update(Request $request, Post $post)
{
//validate form
$this->validate($request, [
'image' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'title' => 'required|min:5',
'content' => 'required|min:10'
]);
//check if image is uploaded
if ($request->hasFile('image')) {
//upload new image
$image = $request->file('image');
$image->storeAs('public/posts', $image->hashName());
//delete old image
Storage::delete('public/posts/'.$post->image);
//update post with new image
$post->update([
'image' => $image->hashName(),
'title' => $request->title,
'content' => $request->content
]);
} else {
//update post without image
$post->update([
'title' => $request->title,
'content' => $request->content
]);
}
//redirect to index
return redirect()->route('posts.index')->with(['success' => 'Data Berhasil Diubah!']);
}
/**
* destroy
*
* @param mixed $post
* @return void
*/
public function destroy(Post $post)
{
//delete image
Storage::delete('public/posts/'. $post->image);
//delete post
$post->delete();
//redirect to index
return redirect()->route('posts.index')->with(['success' => 'Data Berhasil Dihapus!']);
}
}
Dari perubahan kode di atas, kita menambahkan 1 method baru yang bernama destroy
. Dimana di dalamnya pertama kita melakukan delete gambar dari data post yang terkait.
//delete image
Storage::delete('public/posts/'. $post->image);
Setelah itu, kita hapus data post-nya dari database
//delete post
$post->delete();
Terakhir, kita arahkan ke dalam route yang bernama posts.index
dengan memberikan informasi data berhasil dihapus.
//redirect to index
return redirect()->route('posts.index')->with(['success' => 'Data Berhasil Dihapus!']);
Langkah 2 - Uji Coba Delete Data
Sekarang, silahkan klik button HAPUS
di salah satu data yang teman-teman miliki, maka akan menampilkan popup konfirmasi sebelum data benar-benar dihapus.
Jika kita klik OK
, maka data akan berhasil dihapus dari database, beserta gaambar yang terkait dengan data post tersebut.
Sampai disini pembahasan bagaimana cara membuat proses hapus data di Laravel 9. Jika teman-teman ada kendala atau problem saat mengikuti tutorialnya, maka bisa bertanya di kolom komentar atau di group telegram SantriKoding.
SOURCE CODE : https://github.com/SantriKoding-com/CRUD-Laravel-9
Terima Kasih