
Laravel's SoftDeletes
အားလုံးပဲ မင်္ဂလာပါ။

Codify ရဲ့ ဒီနေ့ Knowledge Sharing session လေး မှာ share ပေးသွားချင်တာကတော့ Laravel Eloquent မှာပါတဲ့ SoftDeletes trait အကြောင်းပဲဖြစ်ပါတယ်။
သူ့ရဲ့ အဓိက support လုပ်ပေးတာကတော့ ကျွန်တော်တို့တွေဖျက်လိုက်တဲ့ database record တွေကို အပြီးဖျက်ပစ်လိုက်တာမဟုတ်ဘဲ user ဘက်ကဖျက်လိုက်တဲ့ timestamp ကိုပဲ record အနေနဲ့ထည့်ပေးလိုက်တာပါ။ ပြောရမယ်ဆိုရင် delete query run လိုက်တာမဟုတ်မျိုးဘဲ update query ပုံစံနဲ့ပဲ အလုပ်လုပ်ပေးလိုက်တဲ့သဘောပါပဲ။ ဒီတော့ ကျွန်တော်တို့ delete function ရေးရင် ကိုယ့်ရဲ့ data တွေကို permanently ဖျက်ပစ်လိုက်တာမျိုးမဟုတ်တာကြောင့် လိုအပ်ရင် ပြန် restore လုပ်လို့ရသလို ပြဿနာတစ်စုံတစ်ရာရှိခဲ့ရင်လည်း အချိန်နဲ့တကွ trace လိုက်ရတာလည်းပိုလွယ်ကူသွားပါလိမ့်မယ်။
SoftDeletes trait ကို သုံးမယ်ဆိုရင် table အတွက် migration create လုပ်တဲ့အခါ column တွေနဲ့အတူ deleted_at ဆိုတဲ့ timestamp ထည့်ပေးလိုက်ရုံပါပဲ။
ပြီးရင် model မှာ use SoftDeletes ဆိုပြီး trait ကို import လုပ်ပြီးခေါ်သုံးပေးဖို့တော့လိုပါတယ်။
ဒါဆိုရင်တော့ withTrashed(), onlyTrash(), withoutTrash() , restore() , forceDelete() စတဲ့ အသုံးဝင်တဲ့ function လေးတွေကို သုံးပြီး recycle feature ပုံစံမျိုးလည်းရေးလို့ရပြီပဲဖြစ်ပါတယ်။
ဥပမာလေးကို ကြည့်လိုက်ရအောင် -
//In migration
Schema::create('posts', function (Blueprint $table) {
$table->bigIncrement('id');
$table->string('title');
$table->text('description');
$table->timestamp('deleted_at')->nullable();
});
//Model
use Illuminate\Database\Eloquent\SoftDeletes;
class Post extends Model
{
use SoftDeletes;
protected $guarded = [];
}
//Controller
$post = Post::withTrashed()->find($id); // id နဲ့ data ရှာတဲ့အခါ delete လုပ်ထားတာရော မလုပ်ထားတာရောရှာပေးတာဖြစ်ပါတယ်။
$post->restore(); // delete လုပ်ထားရင်ပြန်ပြီး restore လုပ်ပေးပါတယ်။ db record မှာ deleted_at column ကို null ပြန်ထည့်ပေးလိုက်တာပဲဖြစ်ပါတယ်။ withoutTrash ဆိုရင်တော့ delete မလုပ်ထားတဲ့ record တွေပဲပြန်ရမှာပါ။ ဒါက Laravel ရဲ့ default behavior ဖြစ်ပါတယ်။
$deletedPosts = Post::onlyTrashed()->get(); //deleted_at null မဖြစ်တဲ့ post တွေ (deleted posts only)ပဲအကုန်ပြန်ရလာမှာဖြစ်ပါတယ်။
$deletedPosts->forceDelete() // permanently delete လုပ်လိုက်ပါပြီ။
ဒီလောက်ဆိုရင်တော့ developer တို့ နားလည်လောက်ပြီထင်ပါတယ်။ အကျိုးရှိတယ်ဆိုရင် like & share လေးလုပ်ပေးကြပါဦးနော်။ တကယ်လို့နားမလည်တာပဲဖြစ်ဖြစ် မေးချင်တာသိချင်တာတွေရှိရင် ကျွန်တော်တို့ page messenger မှာ အချိန်မရွေးလာရောက်မေးမြန်းနိုင်ပါတယ်ခင်ဗျာ။
တခြားတင်ပေးစေချင်တဲ့အကြောင်းအရာလေးတွေ ရှိရင်လည်း comment မှာအကြံပြုသွားပေးပါဦးလို့ပြောရင်း နောက်ထပ် post လေးနဲ့ပြန်တွေ့ကြမယ်နော်..stay tune guys..။



Categories: Knowledge Sharing
Login with your account to share your thoughts...
Comments
No comment yet.