Menghapus Data dengan SoftDelete - Dunia Laravel
Jika
kita mau buat aplikasi website yang lumayan besar, kita perlu memikirkan data
yang kita proses. Karena data itu satu hal yang penting. Kalo misal ada data
yang ga sengaja kehapus dan ternyata data itu penting… ya udah, hilang
selamamnya. Buat mencegah hal kaya gitu, Laravel punya sistem yang namanya
softdelete. Jadi artikel ini bakal bahas itu.
Table of Contents
- Thing That Need to be Prepared
- Setting Migration for Softdelete
- Setting Model User for Softdelete
Thing That Need to be Prepared
Buat
coba sofdeletenya, kalian paling ga harus punya CRUD biasa dulu. Soalnya ini
bakal ga jauh beda sama CRUD biasa, cuma bakal nambah beberapa pengaturan aja.
Kalo
udah punya fungsi delete, nanti kita bakal lebih cepet, karena cuma ngatur
dibagian model sama migration.
Setting Migration for Softdelete
Hal
pertama yang perlu kita lakukan adalah setting table database kita. Buat
migration baru buat edit table kalian. Disini sebagai contoh aku pake table ‘users’.
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->softDeletes();
});
}
Dimigration
nya kita pake $table->softDeletes(),
nantinya perintah migration ini bakal ngebuat kolom ‘deleted_at’ di table yang
kita tuju. Kolom ini yang menandakan apakah data tersebut udah di delete atau
belum.
Kolom yang terisi
artinya udah kedelete, dan yang masih NULL artinya belum kedelete.
Setting Model Users for Softdelete
Selanjutnya kita atur
modelnya, biar kalo kita jalanin perintah delete untuk delete data, data yang
ada didatabase tidak benar-benar didelete.
use Illuminate\Database\Eloquent\SoftDeletes;
class User extends Authenticatable
{
use SoftDeletes;
protected $dates = ['deleted_at'];
}
Kita
perlu menambahkan use Illuminate\Database\Eloquent\SoftDeletes;
di model. Dan beberapa kode kedalam class User. Kode-kode itu yang nantinya
bakal dipake buat ngasih tau kalo delete yang biasa udah diganti pake
softdelete.
Kalo udah, kita tinggal jalanin fungsi
delete kaya biasa. Disini aku pake kode yang pernah dibahas di artikel
sebelumnya. Ga ada yang aku ubah, aku cuma ngatur migration sama modelnya aja.
Kalo berhasil, hasil yang bakal muncul adalah kaya gambar table yang aku
tunjukin di bagian setting migration. Kalo yang kedelete bakal keisi, yang ga
kedelete bakal tetep NULL.
Komentar
Posting Komentar