Memahami Fitur Soft Delete pada Laravel Filament
Fitur Soft Delete dalam Laravel Filament adalah mekanisme penghapusan data yang tidak bersifat permanen. Artinya, data masih dapat dipulihkan (restore) kapan saja selama tidak dilakukan force delete. Dengan pendekatan ini, pengembangan sistem CRUD menjadi lebih aman, terutama untuk aplikasi produksi yang memerlukan riwayat data dan sistem audit.
Selain memberikan keamanan, fitur Soft Delete juga memungkinkan admin untuk mengelola data yang sudah tidak dipakai tanpa langsung menghilangkannya dari database. Hal ini menjadikan Soft Delete sebagai fitur penting dalam manajemen data modern, khususnya dalam modul sistem administrasi yang dikembangkan menggunakan Laravel dan Filament.
Apa Itu Soft Delete?
Secara definisi, Soft Delete adalah metode penghapusan data yang hanya menandai record sebagai terhapus tanpa menghapusnya secara fisik dari database. Laravel menangani konsep ini dengan menambahkan kolom deleted_at pada tabel.
Record yang sudah soft deleted:
- Tidak tampil pada query biasa
- Tidak benar-benar hilang dari tabel
- Dapat dipulihkan kembali (restore)
- Masih dapat dilihat jika query disesuaikan
Hal ini sangat berguna dalam aplikasi yang memerlukan audit trail atau rollback data.
Mengaktifkan Soft Delete pada Model
Untuk mengaktifkan Soft Delete, developer cukup menambahkan trait SoftDeletes pada model.
Contoh:
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Post extends Model
{
use SoftDeletes;
}
Dengan ini, Laravel secara otomatis mendeteksi field deleted_at.
Menambahkan Kolom deleted_at di Migration
Pastikan migration tabel memiliki kolom deleted_at:
Schema::table('posts', function (Blueprint $table) {
$table->softDeletes();
});
Kolom ini menjadi indikator apakah record sudah dihapus (soft) atau belum.
Integrasi Soft Delete dengan Filament
Ketika model sudah menggunakan trait SoftDeletes, Filament secara otomatis mendukung fitur:
- Delete (soft delete)
- Restore (pulihkan data)
- Force delete (hapus permanen)
- Filtering berdasarkan status
Menampilkan Tombol Restore dan Force Delete
Filament menyediakan actions untuk mengembalikan dan menghapus permanen data yang di-soft delete.
Contoh implementasi pada Table Actions:
->actions([
Tables\Actions\DeleteAction::make(),
Tables\Actions\RestoreAction::make(),
Tables\Actions\ForceDeleteAction::make(),
])
Keterangan:
ActionFungsiDeleteActionSoft deleteRestoreActionPulihkan dataForceDeleteActionHapus permanen
Table Filters untuk Soft Delete
Dalam dashboard admin, biasanya admin ingin memfilter record yang sudah dihapus. Filament mendukung filter bawaan untuk soft delete:
->filters([
Tables\Filters\TrashedFilter::make(),
])
Filter ini memungkinkan admin memilih:
- Record aktif
- Record terhapus (trashed)
- Semua record
Query Soft Delete pada Resource
Filament menggunakan query bawaan Laravel sehingga soft delete berfungsi otomatis. Namun, jika ingin memperluas query, gunakan:
public static function getEloquentQuery(): Builder
{
return parent::getEloquentQuery()->withoutGlobalScopes([
SoftDeletingScope::class,
]);
}
Ini berguna jika ingin menampilkan record terhapus pada tabel secara default.
Bulk Soft Delete dan Restore
Untuk mempermudah operasi massal, Filament mendukung bulk actions.
Contoh bulk delete:
->bulkActions([
Tables\Actions\DeleteBulkAction::make(),
])
Contoh bulk restore dan force delete:
->bulkActions([
Tables\Actions\RestoreBulkAction::make(),
Tables\Actions\ForceDeleteBulkAction::make(),
])
Hal ini sangat berguna untuk admin yang sering mengelola data dalam jumlah besar.
Keuntungan Soft Delete
Penerapan Soft Delete membawa berbagai manfaat, terutama dalam aplikasi dengan kebutuhan audit dan keamanan data, antara lain:
- Mencegah kehilangan data permanen
- Memungkinkan rollback data
- Aman untuk aplikasi produksi
- Mendukung log dan audit trail
- Integrasi mudah dengan Filament
- Mendukung bulk restore & force delete
Dengan keuntungan ini, Soft Delete menjadi standar umum pada aplikasi modern.
Kapan Menggunakan Soft Delete?
Soft delete cocok untuk sistem yang memerlukan:
- Histori data
- Pemulihan data (restore)
- Audit internal
- Akses record pasca penghapusan
Contohnya:
- Sistem E-commerce (produk tidak langsung hilang)
- CMS (artikel dapat dipulihkan)
- Sistem kepegawaian (data karyawan tetap tersedia)
- Sistem manajemen pelanggan
Kesimpulan
Fitur Soft Delete pada Laravel Filament memberikan mekanisme penghapusan data yang aman dan fleksibel tanpa kehilangan data secara permanen. Dengan dukungan restore, force delete, dan filtering, Filament menjadikan pengelolaan data semakin profesional dan terkontrol. Solusi ini sangat direkomendasikan bagi aplikasi modern yang mengutamakan keamanan data, auditability, dan kemudahan administrasi.