লারাভেল (Laravel) একটি অত্যন্ত শক্তিশালী PHP ফ্রেমওয়ার্ক, যা ডেভেলপারদের দ্রুত এবং কার্যকরীভাবে অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে। এর মধ্যে এলোকোয়েন্ট কালেশন (Eloquent Collection) একটি অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য। এটি একটি আরামদায়ক এবং শক্তিশালী টুল যা ডাটাবেইজ থেকে রেকর্ডগুলো সংগ্রহ করার পর তাদের ওপর নানা ধরনের অপারেশন করতে সাহায্য করে।
এলোকোয়েন্ট কালেশন (Eloquent Collection) হল একটি বস্তু (object) যা ডাটাবেইজ থেকে ফেরত আসা এক বা একাধিক মডেল ইনস্ট্যান্স ধারণ করে। এটি একটি বিশেষ ধরনের অ্যারে (array), যা রেকর্ডগুলোর ওপর বিভিন্ন ধরনের কার্যকলাপ পরিচালনা করতে পারে। এলোকোয়েন্ট কালেশন ব্যবহার করে আপনি ডাটাবেইজ থেকে ফেচ করা ডেটা সহজেই ম্যানিপুলেট (manipulate) করতে পারেন, যেমন ফিল্টারিং, ম্যাপিং, অ্যাগ্রিগেটিং ইত্যাদি।
লারাভেল ইলেকোয়েন্ট কালেশন সাধারণত মডেল থেকে ডেটা ফেচ করার পর তৈরি হয়। নিচে একটি উদাহরণ দেওয়া হল:
use App\Models\Post;
$posts = Post::all();
এখানে, Post::all()
কমান্ডটি posts
টেবিলের সমস্ত রেকর্ড ফিরিয়ে দেবে এবং একটি কালেশন ইনস্ট্যান্স তৈরি হবে।
লারাভেল এলোকোয়েন্ট কালেশন বেশ কিছু গুরুত্বপূর্ণ মেথড সরবরাহ করে যা ডেটার উপর বিভিন্ন অপারেশন করতে সাহায্য করে। নিচে কিছু প্রধান মেথডের উদাহরণ দেওয়া হল:
each()
মেথডeach()
মেথডের মাধ্যমে আপনি কালেশনের প্রতিটি আইটেমের উপর একটি কাজ করতে পারেন।
$posts->each(function($post) {
echo $post->title;
});
এই কোডটি কালেশন থেকে প্রতিটি Post
এর title
প্রিন্ট করবে।
filter()
মেথডfilter()
মেথড ব্যবহার করে আপনি কালেশন থেকে নির্দিষ্ট শর্ত অনুসারে আইটেম ফিল্টার করতে পারেন।
$filteredPosts = $posts->filter(function($post) {
return $post->status == 'published';
});
এখানে, filter()
মেথডটি status
কলামের মান যদি published
হয়, তবে সেই রেকর্ডগুলোকে ফিরিয়ে দেবে।
map()
মেথডmap()
মেথডের মাধ্যমে আপনি কালেশন প্রতিটি আইটেমের মান পরিবর্তন বা ট্রান্সফর্ম (transform) করতে পারেন।
$titles = $posts->map(function($post) {
return $post->title;
});
এখানে, map()
মেথডটি প্রতিটি পোস্টের title
রিটার্ন করবে এবং একটি নতুন কালেশন তৈরি হবে।
pluck()
মেথডpluck()
মেথড ব্যবহার করে আপনি শুধুমাত্র নির্দিষ্ট কলামের মান বের করতে পারেন।
$titles = $posts->pluck('title');
এটি posts
টেবিলের সব title
কলাম থেকে মান সংগ্রহ করবে।
reduce()
মেথডreduce()
মেথড কালেশন থেকে একটি একক মান তৈরি করতে ব্যবহৃত হয়।
$totalLikes = $posts->reduce(function($carry, $post) {
return $carry + $post->likes;
}, 0);
এখানে, reduce()
মেথডটি পোস্টের likes
সংখ্যা গুলি যোগ করে একটি মোট পরিমাণ বের করবে।
sortBy()
মেথডsortBy()
মেথড ব্যবহার করে আপনি কালেশনটি কোনো নির্দিষ্ট কলামের ভিত্তিতে সাজাতে পারেন।
$sortedPosts = $posts->sortBy('created_at');
এটি পোস্টগুলোকে created_at
কলামের ভিত্তিতে সাজাবে।
first()
মেথডfirst()
মেথডটি কালেশন থেকে প্রথম আইটেমটি বের করে আনে।
$firstPost = $posts->first();
এখানে, প্রথম পোস্টটি রিটার্ন করা হবে।
এলোকোয়েন্ট কালেশন বেশ কিছু অ্যাগ্রিগেটিং ফাংশনও সরবরাহ করে, যেমন:
count()
: কালেশনে মোট আইটেমের সংখ্যা।sum()
: নির্দিষ্ট কলামের মোট যোগফল।avg()
: নির্দিষ্ট কলামের গড় মান।min()
এবং max()
: নির্দিষ্ট কলামের সর্বনিম্ন এবং সর্বোচ্চ মান।$totalPosts = $posts->count();
$totalLikes = $posts->sum('likes');
$averageLikes = $posts->avg('likes');
এলোকোয়েন্ট কালেশন পেজিনেশন সমর্থন করে, যার মাধ্যমে আপনি ডেটাকে বিভিন্ন পেজে ভাগ করে দেখাতে পারেন।
$posts = Post::paginate(10);
এটি প্রতি পেজে ১০টি পোস্ট প্রদর্শন করবে।
এলোকোয়েন্ট কালেশন লারাভেল ডেভেলপমেন্টে একটি অত্যন্ত শক্তিশালী টুল। এটি ডাটাবেইজ থেকে ফেচ করা ডেটাকে ম্যানিপুলেট করার জন্য সহজ এবং চমৎকার মেথড সরবরাহ করে, যা ডেভেলপারদের কোডিং প্রক্রিয়া দ্রুত এবং কার্যকরী করতে সহায়তা করে।