Tutorial REST API di Laravel #6 : Delete Data dari Database

Pada tutorial sebelumnya kita sudah berhasil membuat update data ke database dengan REST API di Framework Laravel. Pada tutorial ini kita akan belajar bagaimana cara menghapus data dari database dengan REST API di Framework Laravel.

Silahkan buka file PostsController.php di dalam folder app/Http/Controllers/api/v1, silahkan tamahkan 1 fungsi bernama destroy() dengan kode seperti berikut ini :

public function destroy($id)
{
    $post = Post::findOrFail($id);
    $post->delete();

    if ($post) {
        return response()->json(
            [
                'success' => true,
                'message' => 'Post Berhasil Dihapus!',
            ], 
        200);
    } 
    else {
        return response()->json(
            [
                'success' => false,
                'message' => 'Post Gagal Dihapus!',
            ], 
            400
        );
    }
}

Sehingga sintak pada file PostsController.php menjadi seperti berikut ini :

<?php

namespace App\Http\Controllers\api\v1;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

use App\Models\Post;
use Illuminate\Support\Facades\Validator;


class PostsController extends Controller
{

    /**
     * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
     */

    /**
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */

    
    public function index()
    {
        $posts = Post::latest()->get();
        return response(
            [
                'success' => true,
                'message' => 'List Semua Posts',
                'data' => $posts
            ], 
        200);
    }

    public function show($id)
    {
        $post = Post::whereId($id)->first();

        if ($post) {
            return response()->json(
                [
                    'success' => true,
                    'message' => 'Detail Post!',
                    'data' => $post
                ], 
                200
            );
        } 
        else {
            return response()->json(
                [
                    'success' => false,
                    'message' => 'Post Tidak Ditemukan!',
                    'data' => ''
                ], 
                401
            );
        }
    }


    public function update(Request $request)
    {
        //validate data
        $validator = Validator::make(
            $request->all(), 
            [
                'title' => 'required',
                'content' => 'required',
            ],
            [
                'title.required' => 'Masukkan Title Post !',
                'content.required' => 'Masukkan Content Post !',
            ]               
        );

        if($validator->fails()) {
            return response()->json(
                [
                    'success' => false,
                    'message' => 'Silahkan Isi Bidang Yang Kosong',
                    'data' => $validator->errors()
                ],
                
            );
        } 
        else {
            $post = Post::whereId($request->input('id'))->update(
                [
                    'title' => $request->input('title'),
                    'content' => $request->input('content'),
                ]
            );

            if ($post) {
                return response()->json(
                    [
                        'success' => true,
                        'message' => 'Post Berhasil Diupdate!',
                    ], 
                    200
                );
            } 
            else {
                return response()->json(
                    [
                        'success' => false,
                        'message' => 'Post Gagal Diupdate!',
                    ], 
                    401
                );
            }
        }
    }


    public function destroy($id)
    {
        $post = Post::findOrFail($id);
        $post->delete();

        if ($post) {
            return response()->json(
                [
                    'success' => true,
                    'message' => 'Post Berhasil Dihapus!',
                ], 
            200);
        } 
        else {
            return response()->json(
                [
                    'success' => false,
                    'message' => 'Post Gagal Dihapus!',
                ], 
                400
            );
        }
    }


    public function store(Request $request)
    {
        //validate data
        $validator = Validator::make(
            $request->all(),
            [
                'title' => 'required',
                'content' => 'required',
            ],

            [
                'title.required' => 'Masukkan Title Post !',
                'content.required' => 'Masukkan Content Post !',
            ]
        );

        if ($validator->fails()) {
            return response()->json(
                [
                    'success' => false,
                    'message' => 'Silahkan Isi Bidang Yang Kosong',
                    'data' => $validator->errors()
                ],
                401
            );
        } 
        else {
            $post = Post::create([
                'title' => $request->input('title'),
                'content' => $request->input('content')
            ]);

            if ($post) {
                return response()->json([
                    'success' => true,
                    'message' => 'Post Berhasil Disimpan!',
                ], 200);
            } else {
                return response()->json(
                    [
                        'success' => false,
                        'message' => 'Post Gagal Disimpan!',
                    ],
                    401
                );
            }
        }
    }
}

Pada sintak di atas, kita sudah menambahkan 1 fungsi baru dengan nama destroy(), fungsi ini kita gunakan untuk menghapus data dari database.

Baca Juga  Struktur Logika Percabangan (Decision) dalam PHP

Sekarang kita buka file api.php di dalam folder routes, dan silahkan tambahkan kode berikut ini :

Route::delete('/v1/posts/{id?}', [App\Http\Controllers\api\v1\PostsController::class, 'destroy']);

Sekarang kita coba langsung dengan Postman, misalkan kita akan menghapus data dengan ID 1, silahkan masukkan http://localhost:8000/api/v1/posts/1 pada bagian URL dan jangan lupa menggunakan method DELETE.

Jika berhasil, maka akan melihat response dengan format JSON seperti berikut ini :

{
    "success": true,
    "message": "Post Berhasil Dihapus!"
}

Seperti pada gambar beikut ini :

Kita cek juga ke table posts yang ada pada databse db_laravel_api, jika berhasil maka data dengan ID 1  juga akan berhasil dihapus seperti gambar berikut ini :

Demikian tutorial tentang menghapus data dari database dengan RAST API pada Laravel. Jika ada pertanyaan silahkan tuliskan dikolom komentar, semoga bermanfaat.

Related Post

Be the first to comment

Leave a Reply

Your email address will not be published.


*


error: Ga bisa dicopy