Fitur Soft Deleting pada Laravel
kita akan coba menggunakan konsep soft delete, yaitu ketika dihapus Data tidak langsung dihapus dari database, akan tetapi ditandai saja bahwa status dari sebuah data tersebut sedang didelete atau dalam tong sampah (trashed).
Status tersebut diindikasikan oleh field deleted_at yang memiliki nilai. Jika deleted_at bernilai NULL
maka data sedang aktif (tidak di tong sampah), sebaliknya jika field deleted_at memiliki nilai yaitu tanggal kapan data tersebut dihapus maka dia dianggap di tong sampah.
Secara default fitur soft delete itu tidak aktif, untuk itu untukmenggunakan fitur tersebut kita perlu mengaktifkannya di model.
buka model yang kita miliki untuk sebagai contoh, saya memiliki model Category.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\softDeletes;
class Category extends Model
{
use SoftDeletes;
}
dengan ini berarti SoftDelete sudah Aktif, jangan lupa pastikan kita memili field delete_at.
kita buat route untuk softdelete, silakan paste pada bagian table action pada view index.blade.php
<form class="d-inline" action="{{route('categories.destroy', [$category->id])}}" method="POST" onsubmit="return confirm('Move category to trash?')"> @csrf <input type="hidden" value="DELETE" name="_method"> <input type="submit" class="btn btn-danger btn-sm" value="Trash"> </form>
Menangkap request delete, isikan pada controller yang kita miliki sesuai model yang telah kita aktifkan softdelete.
public function destroy($id){
$category = \App\Category::findOrFail($id);
return redirect()->route('categories.index')
->with('status', 'Category successfully moved to trash');
}
baik kita telah selesai membuat soft delete, selamat mencoba dan terima kasih.