Restore Data Soft Delete | Laravel

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 lanjutan artikel yang kemarin yaitu Soft Delete pada Laravel dan sekarang kita bisa merestore data tersebut untuk dapat memunculkan kembali pada view nya. Berikut langkah - langkah cara merestore data yang telah dihapus dengan fitur Soft Delete pada Laravel

1. Kita dapat menampilkan terlebih dahulu data-data yang telah dihapus (dimasukkan ke dalam tong sampah) tersebut, dengan menambahkan button action pada view index beserta routenya

Route::get('siswa/trash', 'SiswaController@trash')->name('siswa.trash');
                                    ||
<a href="{{ route('siswa.trash') }}" class="btn btn-warning">Recycle</a>

2. Tambahkan pada SiswaController dengan method trash

public function trash()
  {
    $siswa = Siswa::onlyTrashed()->get();
    return view('siswa.trash', compact('siswa'));
  }

3. Dan buat view trash untuk menampilkan hasil data dari method tadi

@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.restores') }}" class="btn btn-success">Restore</a>
                            <a href="{{ route('siswa.trashed-permanent') }}" class="btn btn-danger">Hapus Permanen</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.restore', $item->id) }}" title="Restore" style="text-combine-upright: none">
                                            <span class="btn btn-xs btn-info">Restore</span>
                                        </a>
                                        <a href="{{ route('siswa.trashed', $item->id) }}" title="Hapus Permanen" style="text-decoration: none">
                                            <span class="btn btn-xs btn-warning">Hapus Permanen</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 class="text-right">
                        <a href="{{ route('siswa.index') }}" class="btn btn-danger">Kembali</a>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

Disini kita bisa melihat daftar data yang berada di tong sampah kurang lebih seperti ini

4. Untuk merestore data secara satu per satu kita bisa menambahkan route dan method pada controller nya

Untuk Route kurang lebih seperti ini

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

Untuk Method controller kurang lebih seperti ini

public function restore($id)
   {
     $siswa = Siswa::onlyTrashed()->where('id', $id);
     $siswa->restore();

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

Dan kita coba merestore atas nama " Deval " kemudian kita cek pada indexnya

5. Untuk merestore semua secara sekaligus kita harus menambahkan method pada controller dan juga routenya

Untuk routenya kurang lebih seperti ini

Route::get('siswa/restores', 'SiswaController@restores')->name('siswa.restores');

Untuk Method controller kurang lebih seperti ini

public function restores()
  {
     $siswa = Siswa::onlyTrashed();
     $siswa->restore();

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

Dan kita coba merestore semua data kemudian kita cek pada indexnya

6. Sekarang kita coba untuk dapat menghapus secara permanen satu persatu data pada tong sampah berikut

Tambahkan route baru kurang lebih seperti ini

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

Tambahkan juga method pada controllernya

public function trashed($id)
  {
     $siswa = Siswa::onlyTrashed()->where('id', $id);
     $siswa->forceDelete();

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

Dan kita coba menghapus satu persatu data, kita coba dengan nama " Yoga " kemudian kita cek pada databasenya apakah masih ada / tidak

Dan ternyata data atas nama " Yoga " memang sudah terhapus secara permanent pada databasenya

7. Kita coba satu lagi fitur untuk dapat menghapus data pada tong sampah secara permanent secara sekaligus

Tambahkan route baru kurang lebih seperti ini

Route::get('siswa/trashed', 'SiswaController@trashed_permanent')->name('siswa.trashed-permanent');

Tambahkan juga method pada controllernya

public function trashed_permanent()
  {
     $siswa = Siswa::onlyTrashed();
     $siswa->forceDelete();

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

Dan kita coba menghapus data secara sekaligus secara permanent , kemudian kita cek pada databasenya apakah masih ada / tidak

Dan ternyata datanya memang sudah terhapus secara permanent pada databasenya

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...

 

Website klik disini
Youtube klik disini
Fans Page klik disini

Related Articles

Comments