DEV Community

Cover image for Laravel Eloquent ORM in Bangla Part-5 (Inserting and Updating Models)
Sontus Chandra Anik
Sontus Chandra Anik

Posted on

Laravel Eloquent ORM in Bangla Part-5 (Inserting and Updating Models)

Laravel Eloquent-এ Inserting and Updating Models ডাটাবেস টেবিলে নতুন ডেটা যোগ করা এবং বিদ্যমান ডেটা আপডেট করার জন্য ব্যবহৃত হয়। এটি অত্যন্ত সহজ এবং ইনটুইটিভ পদ্ধতিতে কাজ করে। নিচে বিস্তারিতভাবে এই বিষয়গুলো আলোচনা করা হলো।

Inserting Models (ডেটা যোগ করা)

১. নতুন রেকর্ড তৈরি (Using save Method)

Eloquent মডেল তৈরি এবং সেভ করতে save() মেথড ব্যবহার করা হয়।

use App\Models\Post;

// নতুন পোস্ট তৈরি
$post = new Post();
$post->title = 'New Blog Post';
$post->content = 'This is the content of the post.';
$post->status = 'draft';

// ডেটা সেভ করুন
$post->save();

Enter fullscreen mode Exit fullscreen mode
  • উপরের উদাহরণে ডেটা মডেলে অ্যাসাইন করার পরে save() মেথড কল করা হয়।
  • এটি ডাটাবেসে নতুন রেকর্ড তৈরি করে।

২. সংক্ষিপ্ত পদ্ধতি (Using create Method)

create() মেথড সরাসরি এক লাইনে ডেটা ইনসার্ট করে।

use App\Models\Post;

Post::create([
    'title' => 'Quick Blog Post',
    'content' => 'This is the content.',
    'status' => 'published',
]);

Enter fullscreen mode Exit fullscreen mode

Note: create() ব্যবহারের জন্য আপনার মডেলে fillable বা guarded প্রপার্টি ডিফাইন করতে হবে।

class Post extends Model
{
    protected $fillable = ['title', 'content', 'status'];
}

Enter fullscreen mode Exit fullscreen mode

৩. ডাটাবেসে একাধিক রেকর্ড যোগ করা (Mass Insert)

insert() মেথড ব্যবহার করে একসঙ্গে একাধিক রেকর্ড ইনসার্ট করা যায়।

use App\Models\Post;

Post::insert([
    ['title' => 'Post 1', 'content' => 'Content 1', 'status' => 'published'],
    ['title' => 'Post 2', 'content' => 'Content 2', 'status' => 'draft'],
]);

Enter fullscreen mode Exit fullscreen mode

Updating Models (ডেটা আপডেট করা)

. নির্দিষ্ট রেকর্ড আপডেট করা (Using save Method)

ডাটাবেস থেকে একটি মডেল ফেচ করে এর ডেটা আপডেট করা যায়।

use App\Models\Post;

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

// ডেটা আপডেট করুন
$post->title = 'Updated Blog Post';
$post->status = 'published';

// সেভ করুন
$post->save();

Enter fullscreen mode Exit fullscreen mode

২. update() মেথড ব্যবহার করে আপডেট করা

update() মেথড সরাসরি একাধিক কলাম আপডেট করতে ব্যবহৃত হয়।

use App\Models\Post;

Post::where('id', 1)->update([
    'title' => 'Updated Title',
    'status' => 'published',
]);

Enter fullscreen mode Exit fullscreen mode

৩. অনেক রেকর্ড একসঙ্গে আপডেট করা

update() ব্যবহার করে একাধিক রেকর্ড আপডেট করা যায়।

use App\Models\Post;

Post::where('status', 'draft')->update(['status' => 'archived']);

Enter fullscreen mode Exit fullscreen mode

Inserting or Updating Without Retrieving (Upsert)

upsert() মেথড নতুন ডেটা যোগ করা বা বিদ্যমান ডেটা আপডেট করার জন্য ব্যবহৃত হয়।

use App\Models\Post;

Post::upsert([
    ['id' => 1, 'title' => 'Upserted Title 1', 'status' => 'published'],
    ['id' => 2, 'title' => 'Upserted Title 2', 'status' => 'draft'],
], ['id'], ['title', 'status']);

Enter fullscreen mode Exit fullscreen mode

Explanation:

  1. প্রথম প্যারামিটার: ইনসার্ট বা আপডেট করার জন্য ডেটা।
  2. দ্বিতীয় প্যারামিটার: কী দ্বারা বিদ্যমান রেকর্ড সনাক্ত করা হবে।
  3. তৃতীয় প্যারামিটার: কোন কলামগুলো আপডেট হবে।

Timestamps and Soft Deletes Handling

১. timestamps অটোমেটিক আপডেট

Laravel ডিফল্টভাবে created_at এবং updated_at কলামগুলো আপডেট করে।

$post = Post::find(1);
$post->status = 'archived';
$post->save(); // `updated_at` কলাম অটোমেটিক আপডেট হবে

Enter fullscreen mode Exit fullscreen mode

২. Soft Delete Handling

যদি আপনার মডেলে Soft Deletes সক্রিয় থাকে, তাহলে ডেটা মুছে ফেলার পরিবর্তে deleted_at কলাম আপডেট হবে।

$post->delete(); // Soft Delete

Enter fullscreen mode Exit fullscreen mode

Bulk Insert and Update Best Practices

  • Single Transaction: একাধিক অপারেশন করার সময় ডেটাবেস ট্রানজেকশন ব্যবহার করুন।
DB::transaction(function () {
    Post::create([...]);
    Post::update([...]);
});

Enter fullscreen mode Exit fullscreen mode
  • Validate Data: ইনসার্ট বা আপডেট করার আগে ডেটা যাচাই করুন।
  • Use Mass Assignment Protection: $fillable বা $guarded সঠিকভাবে ব্যবহার করুন।

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)

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

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay