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

Image of Timescale

Timescale – the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free

Top comments (0)

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay