DEV Community

Cover image for Laravel Eloquent ORM in Bangla Part-6 (Deleting Models)
Sontus Chandra Anik
Sontus Chandra Anik

Posted on

Laravel Eloquent ORM in Bangla Part-6 (Deleting Models)

Laravel Eloquent-এ Deleting Models ডাটাবেস থেকে রেকর্ড সরানোর জন্য ব্যবহার করা হয়। এটি ডেটা ডিলিট করার জন্য একটি সহজ এবং কার্যকর উপায় সরবরাহ করে। নিচে বিভিন্ন পদ্ধতিতে মডেল ডিলিট করার উপায়গুলো দেখানো হলো।

১. একক মডেল ডিলিট করা

delete() মেথড ব্যবহার করে ডিলিট করা

delete() মেথড ব্যবহার করে ডাটাবেস থেকে একটি নির্দিষ্ট রেকর্ড ডিলিট করা যায়।

use App\Models\Post;

// রেকর্ড খুঁজে বের করুন
$post = Post::find(1);

// ডিলিট করুন
$post->delete();

Enter fullscreen mode Exit fullscreen mode

Note: ডিলিট করার পর রেকর্ড আর ডাটাবেসে থাকবে না।

২. একাধিক রেকর্ড ডিলিট করা

delete() মেথড এবং where ব্যবহার করে

একাধিক রেকর্ড ডিলিট করার জন্য where কন্ডিশনের সাথে delete() ব্যবহার করা হয়।

use App\Models\Post;

// স্ট্যাটাস 'draft' এর সকল রেকর্ড ডিলিট করুন
Post::where('status', 'draft')->delete();

Enter fullscreen mode Exit fullscreen mode

৩. destroy() মেথড ব্যবহার করা

destroy() মেথড ব্যবহার করে এক বা একাধিক রেকর্ড ডিলিট করা যায়।

use App\Models\Post;

// একক রেকর্ড ডিলিট করুন
Post::destroy(1);

// একাধিক রেকর্ড ডিলিট করুন
Post::destroy([2, 3, 4]);

Enter fullscreen mode Exit fullscreen mode

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);
        });
    }
}

Enter fullscreen mode Exit fullscreen mode

৫. Soft Deletes (সফট ডিলিট)

সফট ডিলিট কী?

  • সফট ডিলিটের মাধ্যমে রেকর্ড ফিজিক্যালি ডিলিট না করে, deleted_at কলামে ডিলিট টাইমস্ট্যাম্প সেভ করা হয়।
  • সফট ডিলিট ব্যবহার করতে মডেলে SoftDeletes ট্রেইট যুক্ত করতে হয়।
use Illuminate\Database\Eloquent\SoftDeletes;

class Post extends Model
{
    use SoftDeletes;

    protected $dates = ['deleted_at'];
}

Enter fullscreen mode Exit fullscreen mode

সফট ডিলিট করা

use App\Models\Post;

// সফট ডিলিট করুন
$post = Post::find(1);
$post->delete(); // `deleted_at` কলামে টাইমস্ট্যাম্প যুক্ত হবে

Enter fullscreen mode Exit fullscreen mode

সফট ডিলিট হওয়া রেকর্ড পুনরুদ্ধার (Restore) করা

// সফট ডিলিট হওয়া রেকর্ড ফেচ করুন
$post = Post::withTrashed()->find(1);

// পুনরুদ্ধার করুন
$post->restore();

Enter fullscreen mode Exit fullscreen mode

সম্পূর্ণরূপে ডিলিট করা (Force Delete)

সফট ডিলিট রেকর্ড সম্পূর্ণরূপে ডিলিট করতে forceDelete() ব্যবহার করা হয়।

$post->forceDelete(); // রেকর্ড সম্পূর্ণরূপে ডিলিট হবে

Enter fullscreen mode Exit fullscreen mode

সফট ডিলিট হওয়া রেকর্ড কোয়েরি করা

i) withTrashed()

সফট ডিলিট হওয়া এবং না হওয়া উভয় ধরনের রেকর্ড রিট্রিভ করতে:

$posts = Post::withTrashed()->get();

Enter fullscreen mode Exit fullscreen mode

ii) onlyTrashed()

শুধুমাত্র সফট ডিলিট হওয়া রেকর্ড রিট্রিভ করতে:

$trashedPosts = Post::onlyTrashed()->get();

Enter fullscreen mode Exit fullscreen mode

৬. ডাটাবেস থেকে সরাসরি ডিলিট করা

Laravel-এর DB ফ্যাসেড ব্যবহার করে সরাসরি SQL কুয়েরি দিয়ে রেকর্ড ডিলিট করা যায়।

use Illuminate\Support\Facades\DB;

// সরাসরি SQL কুয়েরি
DB::table('posts')->where('status', 'draft')->delete();

Enter fullscreen mode Exit fullscreen mode

Postgres on Neon - Get the Free Plan

No credit card required. The database you love, on a serverless platform designed to help you build faster.

Get Postgres on Neon

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Immerse yourself in a wealth of knowledge with this piece, supported by the inclusive DEV Community—every developer, no matter where they are in their journey, is invited to contribute to our collective wisdom.

A simple “thank you” goes a long way—express your gratitude below in the comments!

Gathering insights enriches our journey on DEV and fortifies our community ties. Did you find this article valuable? Taking a moment to thank the author can have a significant impact.

Okay