Laravel Eloquent-এ Deleting Models ডাটাবেস থেকে রেকর্ড সরানোর জন্য ব্যবহার করা হয়। এটি ডেটা ডিলিট করার জন্য একটি সহজ এবং কার্যকর উপায় সরবরাহ করে। নিচে বিভিন্ন পদ্ধতিতে মডেল ডিলিট করার উপায়গুলো দেখানো হলো।
১. একক মডেল ডিলিট করা
delete()
মেথড ব্যবহার করে ডিলিট করা
delete()
মেথড ব্যবহার করে ডাটাবেস থেকে একটি নির্দিষ্ট রেকর্ড ডিলিট করা যায়।
use App\Models\Post;
// রেকর্ড খুঁজে বের করুন
$post = Post::find(1);
// ডিলিট করুন
$post->delete();
Note: ডিলিট করার পর রেকর্ড আর ডাটাবেসে থাকবে না।
২. একাধিক রেকর্ড ডিলিট করা
delete()
মেথড এবং where
ব্যবহার করে
একাধিক রেকর্ড ডিলিট করার জন্য where
কন্ডিশনের সাথে delete()
ব্যবহার করা হয়।
use App\Models\Post;
// স্ট্যাটাস 'draft' এর সকল রেকর্ড ডিলিট করুন
Post::where('status', 'draft')->delete();
৩. destroy()
মেথড ব্যবহার করা
destroy()
মেথড ব্যবহার করে এক বা একাধিক রেকর্ড ডিলিট করা যায়।
use App\Models\Post;
// একক রেকর্ড ডিলিট করুন
Post::destroy(1);
// একাধিক রেকর্ড ডিলিট করুন
Post::destroy([2, 3, 4]);
Note: destroy() সরাসরি প্রাইমারি কী ব্যবহার করে রেকর্ড ডিলিট করে।
৪. ডিলিট করার সময় ইভেন্ট হ্যান্ডল করা
Eloquent মডেল ডিলিট করার সময় Model Events ট্রিগার হয়।
-
deleting
ইভেন্ট: রেকর্ড ডিলিট হওয়ার আগে ট্রিগার হয়। -
deleted
ইভেন্ট: রেকর্ড ডিলিট হওয়ার পরে ট্রিগার হয়।
class Post extends Model
{
protected static function booted()
{
static::deleting(function ($post) {
// ডিলিট হওয়ার আগে কিছু করুন
Log::info('Post is being deleted: ' . $post->id);
});
static::deleted(function ($post) {
// ডিলিট হওয়ার পরে কিছু করুন
Log::info('Post deleted: ' . $post->id);
});
}
}
৫. Soft Deletes (সফট ডিলিট)
সফট ডিলিট কী?
- সফট ডিলিটের মাধ্যমে রেকর্ড ফিজিক্যালি ডিলিট না করে,
deleted_at
কলামে ডিলিট টাইমস্ট্যাম্প সেভ করা হয়। - সফট ডিলিট ব্যবহার করতে মডেলে
SoftDeletes
ট্রেইট যুক্ত করতে হয়।
use Illuminate\Database\Eloquent\SoftDeletes;
class Post extends Model
{
use SoftDeletes;
protected $dates = ['deleted_at'];
}
সফট ডিলিট করা
use App\Models\Post;
// সফট ডিলিট করুন
$post = Post::find(1);
$post->delete(); // `deleted_at` কলামে টাইমস্ট্যাম্প যুক্ত হবে
সফট ডিলিট হওয়া রেকর্ড পুনরুদ্ধার (Restore) করা
// সফট ডিলিট হওয়া রেকর্ড ফেচ করুন
$post = Post::withTrashed()->find(1);
// পুনরুদ্ধার করুন
$post->restore();
সম্পূর্ণরূপে ডিলিট করা (Force Delete)
সফট ডিলিট রেকর্ড সম্পূর্ণরূপে ডিলিট করতে forceDelete()
ব্যবহার করা হয়।
$post->forceDelete(); // রেকর্ড সম্পূর্ণরূপে ডিলিট হবে
সফট ডিলিট হওয়া রেকর্ড কোয়েরি করা
i) withTrashed()
সফট ডিলিট হওয়া এবং না হওয়া উভয় ধরনের রেকর্ড রিট্রিভ করতে:
$posts = Post::withTrashed()->get();
ii) onlyTrashed()
শুধুমাত্র সফট ডিলিট হওয়া রেকর্ড রিট্রিভ করতে:
$trashedPosts = Post::onlyTrashed()->get();
৬. ডাটাবেস থেকে সরাসরি ডিলিট করা
Laravel-এর DB
ফ্যাসেড ব্যবহার করে সরাসরি SQL কুয়েরি দিয়ে রেকর্ড ডিলিট করা যায়।
use Illuminate\Support\Facades\DB;
// সরাসরি SQL কুয়েরি
DB::table('posts')->where('status', 'draft')->delete();
Top comments (0)