Laravel Eloquent ব্যবহার করে Models Retrieving এর মাধ্যমে ডাটাবেস থেকে ডেটা ফেচ করা খুবই সহজ। Eloquent ORM ডাটাবেস টেবিলের সাথে ইন্টারেক্ট করার জন্য সুবিধাজনক এবং রিডেবল মেথড সরবরাহ করে।
নিচে Models Retrieving এর বিভিন্ন ধাপ এবং কৌশল দেখানো হলো:
১. সমস্ত রেকর্ড রিট্রিভ করা (Retrieving All Records)
all()
মেথড ব্যবহার করে টেবিলের সমস্ত রেকর্ড ফেচ করা যায়।
use App\Models\Post;
$posts = Post::all();
- এটি একটি Collection রিটার্ন করে।
- আপনি
foreach
বা অন্যান্য Collection মেথড ব্যবহার করে ডেটা অ্যাক্সেস করতে পারেন:
foreach ($posts as $post) {
echo $post->title;
}
২. একক রেকর্ড রিট্রিভ করা (Retrieving a Single Record)
i) find()
মেথড:
ডাটাবেস টেবিল থেকে প্রাইমারি কী দিয়ে একক রেকর্ড ফেচ করে।
$post = Post::find(1);
if ($post) {
echo $post->title;
}
ii) findOrFail()
মেথড:
যদি রেকর্ড না পাওয়া যায়, তাহলে এটি 404 HTTP Exception ছুড়ে দেয়।
$post = Post::findOrFail(1);
iii) first()
মেথড:
প্রথম রেকর্ড রিট্রিভ করে।
$post = Post::where('status', 'published')->first();
iv) firstOrFail()
মেথড:
প্রথম রেকর্ড না পেলে 404 HTTP Exception দেয়।
$post = Post::where('status', 'published')->firstOrFail();
৩. নির্দিষ্ট রেকর্ড রিট্রিভ করা (Query Constraints)
ডাটাবেস থেকে নির্দিষ্ট রেকর্ড ফিল্টার করার জন্য where
এবং অন্যান্য কন্ডিশন ব্যবহার করা হয়।
i) where
মেথড:
$posts = Post::where('status', 'published')->get();
ii) একাধিক কন্ডিশন:
$posts = Post::where('status', 'published')
->where('user_id', 1)
->get();
iii) orWhere
মেথড:
$posts = Post::where('status', 'published')
->orWhere('status', 'draft')
->get();
৪. নির্দিষ্ট কলাম রিট্রিভ করা
ডিফল্টভাবে, Eloquent সমস্ত কলাম রিট্রিভ করে। নির্দিষ্ট কলাম পেতে select()
ব্যবহার করা হয়।
$posts = Post::select('title', 'content')->get();
৫. পেজিনেশন (Paginate Records)
paginate()
মেথড ব্যবহার করে রেকর্ড পেজিনেট করা যায়।
$posts = Post::paginate(10);
পেজিনেশনের লিঙ্ক দেখানোর জন্য Blade টেমপ্লেটে:
{{ $posts->links() }}
৬. চাঙ্কিং (Chunking)
অনেক ডেটা থাকলে এটি মেমোরি ব্যবহার কমানোর জন্য উপযোগী।
Post::chunk(100, function ($posts) {
foreach ($posts as $post) {
echo $post->title;
}
});
৭. রেকর্ড অর্ডার করা (Ordering Results)
ডাটাবেসের রেকর্ডগুলোকে নির্দিষ্ট ক্রমে রিট্রিভ করতে orderBy()
মেথড ব্যবহার করা হয়।
$posts = Post::orderBy('created_at', 'desc')->get();
৮. লিমিট এবং অফসেট
নির্দিষ্ট সংখ্যক রেকর্ড পেতে take()
বা limit()
এবং skip()
ব্যবহার করা হয়।
$posts = Post::take(5)->get(); // প্রথম ৫টি রেকর্ড
$posts = Post::skip(10)->take(5)->get(); // ১০টি স্কিপ করে পরের ৫টি
৯. অ্যাগ্রিগেট মেথডস (Aggregates)
i) কাউন্ট:
$count = Post::count();
ii) ম্যাক্স:
$maxViews = Post::max('views');
iii) মিন:
$minViews = Post::min('views');
iv) এভারেজ:
$avgViews = Post::avg('views');
v) টোটাল:
$totalViews = Post::sum('views');
১০. কাস্টম রিলেশনশিপ রেট্রিভাল
Eloquent সম্পর্ক ব্যবহার করে অন্যান্য মডেলের ডেটা রিট্রিভ করা সম্ভব।
i) লোড রিলেশনশিপ (Eager Loading):
$posts = Post::with('comments')->get();
ii) নির্দিষ্ট রিলেশনশিপ:
$posts = Post::with(['comments', 'user'])->get();
১১. র এবং র ফার্স্ট মেথড (Raw Queries)
Laravel-এর DB
ফ্যাসেড দিয়ে কাস্টম SQL ব্যবহার করা যায়।
use Illuminate\Support\Facades\DB;
$posts = DB::select('SELECT * FROM posts WHERE status = ?', ['published']);
Top comments (0)