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();
- উপরের উদাহরণে ডেটা মডেলে অ্যাসাইন করার পরে
save()
মেথড কল করা হয়। - এটি ডাটাবেসে নতুন রেকর্ড তৈরি করে।
২. সংক্ষিপ্ত পদ্ধতি (Using create
Method)
create()
মেথড সরাসরি এক লাইনে ডেটা ইনসার্ট করে।
use App\Models\Post;
Post::create([
'title' => 'Quick Blog Post',
'content' => 'This is the content.',
'status' => 'published',
]);
Note: create() ব্যবহারের জন্য আপনার মডেলে fillable বা guarded প্রপার্টি ডিফাইন করতে হবে।
class Post extends Model
{
protected $fillable = ['title', 'content', 'status'];
}
৩. ডাটাবেসে একাধিক রেকর্ড যোগ করা (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'],
]);
Updating Models (ডেটা আপডেট করা)
১. নির্দিষ্ট রেকর্ড আপডেট করা (Using save
Method)
ডাটাবেস থেকে একটি মডেল ফেচ করে এর ডেটা আপডেট করা যায়।
use App\Models\Post;
// রেকর্ড খুঁজে বের করুন
$post = Post::find(1);
// ডেটা আপডেট করুন
$post->title = 'Updated Blog Post';
$post->status = 'published';
// সেভ করুন
$post->save();
২. update()
মেথড ব্যবহার করে আপডেট করা
update()
মেথড সরাসরি একাধিক কলাম আপডেট করতে ব্যবহৃত হয়।
use App\Models\Post;
Post::where('id', 1)->update([
'title' => 'Updated Title',
'status' => 'published',
]);
৩. অনেক রেকর্ড একসঙ্গে আপডেট করা
update()
ব্যবহার করে একাধিক রেকর্ড আপডেট করা যায়।
use App\Models\Post;
Post::where('status', 'draft')->update(['status' => 'archived']);
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']);
Explanation:
- প্রথম প্যারামিটার: ইনসার্ট বা আপডেট করার জন্য ডেটা।
- দ্বিতীয় প্যারামিটার: কী দ্বারা বিদ্যমান রেকর্ড সনাক্ত করা হবে।
- তৃতীয় প্যারামিটার: কোন কলামগুলো আপডেট হবে।
Timestamps and Soft Deletes Handling
১. timestamps
অটোমেটিক আপডেট
Laravel ডিফল্টভাবে created_at
এবং updated_at
কলামগুলো আপডেট করে।
$post = Post::find(1);
$post->status = 'archived';
$post->save(); // `updated_at` কলাম অটোমেটিক আপডেট হবে
২. Soft Delete Handling
যদি আপনার মডেলে Soft Deletes সক্রিয় থাকে, তাহলে ডেটা মুছে ফেলার পরিবর্তে deleted_at
কলাম আপডেট হবে।
$post->delete(); // Soft Delete
Bulk Insert and Update Best Practices
- Single Transaction: একাধিক অপারেশন করার সময় ডেটাবেস ট্রানজেকশন ব্যবহার করুন।
DB::transaction(function () {
Post::create([...]);
Post::update([...]);
});
- Validate Data: ইনসার্ট বা আপডেট করার আগে ডেটা যাচাই করুন।
-
Use Mass Assignment Protection:
$fillable
বা$guarded
সঠিকভাবে ব্যবহার করুন।
Top comments (0)