Soft Delete Laravel | Recycle

Selamat datang kembali di website asepit yang selalu memberikan informasi mengenai dunia Teknologi khususnya pada bidang Komputer, Pemrograman, dan juga Jaringan. Bagaimana kabar kalian semua mudah - mudahan dalam keadaan sehat wal afiat dan selalu dilancarkan rezekinya, Pada kesempatan kali ini saya akan membahas mengenai cara menggunakan fitur Soft Delete pada Laravel. Yang dimana fitur ini hampir sama cara kerjanya dengan Recycle Bin pada Windows yang dimana menghapus data namun tidak bersifat permanen dan bisa direstore kembali. Untuk persiapan nya kita harus menginstal terlebih dahulu project laravel atau bisa juga langsung diterapkan pada project yang sedang dalam proses pengembangan

1. Penginstalan Project Laravel (Bisa skip jika sudah ada)

2. Konfigurasi database pada file .env

3. Buat sebuah Controller, Model dan Migration untuk menampung dan menampilkan sebuah data, kita bisa membuatnya secara langsung dengan perintah berikut

php artisan make:model Siswa -mcr

3. Tambahkan pada tabel yang akan menggunakan fitur soft delete dengan kolom 'deleted_at'

Schema::create('siswas', function (Blueprint $table) {
   $table->bigIncrements('id');
   $table->string('nis');
   $table->string('name');
   $table->string('kelas');
   $table->longText('alamat');
   $table->timestamp('deleted_at')->nullable();
   $table->timestamps();
});

4. Dan tambahkan juga pada modelnya menjadi seperti ini

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Siswa extends Model
{
    use SoftDeletes;
    protected $table = 'siswas';

    protected $dates = ['deleted_at'];
}

4. Buat sebuah route untuk dapat menampilkan dan menghapus data dengan soft delete

Route::get('siswa', 'SiswaController@index')->name('siswa.index');
Route::get('siswa/hapus/{id}', 'SiswaController@hapus')->name('siswa.hapus');

5. Untuk method index & hapusnya kurang lebih seperti ini

<?php
namespace App\Http\Controllers;

use App\Siswa;
use Illuminate\Http\Request;

class SiswaController extends Controller
{
    public function index()
    {
        $siswa = Siswa::get();
        return view('siswa.index', compact('siswa'));
    }

    public function hapus($id)
    {
        $siswa = Siswa::find($id);
        $siswa->delete();

        return redirect()->route('siswa.index');
    }
}

6. Untuk penampakan di view berikut syntaknya

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-body">
                    <div class="card-header text-center">ASEP IT
                    <div class="text-right">
                            <a href="{{ route('siswa.create') }}" class="btn btn-success">Create</a>
                        </div>
                    </div>
                    <br>
                    <table class="table table-sm table-striped table-bordered" style="border-collapse: collapse; border-spacing: 0; width: 100%;">
                        <thead>
                        <tr>
                            <th class="text-center">No</th>
                            <th class="text-center">NIS</th>
                            <th class="text-center">Name</th>
                            <th class="text-center">Kelas</th>
                            <th class="text-center">Alamat</th>
                            <th class="text-center">Action</th>
                        </tr>
                        </thead>
                        <tbody>
                            @if ($siswa->count() > 0)
                                @php
                                    $no = 1;
                                @endphp
                                @foreach ($siswa as $item)
                                <tr style="text-align: center">
                                    <td>{{$no}}</td>
                                    <td>{{$item->nis}}</td>
                                    <td>{{$item->name}}</td>
                                    <td>{{ $item->kelas }}</td>
                                    <td>{{ $item->alamat }}</td>
                                    <td>
                                        <a href="{{ route('siswa.edit', $item->id) }}" title="Edit" style="text-decoration: none">
                                            <span class="btn btn-xs btn-primary">Edit</span>
                                        </a>
                                        <a href="{{ route('siswa.hapus', $item->id) }}" title="Hapus" style="text-decoration: none">
                                            <span class="btn btn-xs btn-danger" >Hapus</span>
                                        </a>
                                    </td>
                                </tr>
                                @php
                                    $no ++;
                                @endphp
                                @endforeach
                            @else
                                <tr class="active text-center">
                                    <td colspan="6">Data Tidak Ditemukan !</td>
                                </tr>
                            @endif
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

7. Kemudian jalankan project dan coba fitur soft delete tersebut

php artisan serv
localhost:8000/siswa

Kita coba hapus data atas nama 'Asep Ependi' maka hasilnya akan seperti ini data menjadi hilang

Sedangkan pada tampilan pada Database masih ada dan kolom deleted_at nya akan terisi waktu dimana kita memproses soft delete tersebut

 

Sampai disini kita sudah berhasil menerapkan soft delete / penghapusan data sementara, mungkin hanya itu saja untuk pembahasan kali ini mohon ma'af bila dalam penulisan serta penyampaian terdapat kesalahan dan kekurangan. Jangan lupa ikuti juga platform lainnya dibawah ini, cukup Sekian dan Terima Kasih...

 

Link Restore Soft Delete klik disini
Website
klik disini
Youtube klik disini
Fans Page klik disini

Related Articles

Comments