DEV Community

Sontus Chandra Anik
Sontus Chandra Anik

Posted on

Laravel Eloquent ORM in Bangla Part-3 (Models Retrieving)

Image description

Laravel Eloquent ব্যবহার করে Models Retrieving এর মাধ্যমে ডাটাবেস থেকে ডেটা ফেচ করা খুবই সহজ। Eloquent ORM ডাটাবেস টেবিলের সাথে ইন্টারেক্ট করার জন্য সুবিধাজনক এবং রিডেবল মেথড সরবরাহ করে।

নিচে Models Retrieving এর বিভিন্ন ধাপ এবং কৌশল দেখানো হলো:

১. সমস্ত রেকর্ড রিট্রিভ করা (Retrieving All Records)

all() মেথড ব্যবহার করে টেবিলের সমস্ত রেকর্ড ফেচ করা যায়।

use App\Models\Post;

$posts = Post::all();

Enter fullscreen mode Exit fullscreen mode
  • এটি একটি Collection রিটার্ন করে।
  • আপনি foreach বা অন্যান্য Collection মেথড ব্যবহার করে ডেটা অ্যাক্সেস করতে পারেন:
foreach ($posts as $post) {
    echo $post->title;
}

Enter fullscreen mode Exit fullscreen mode

২. একক রেকর্ড রিট্রিভ করা (Retrieving a Single Record)

i) find() মেথড:

ডাটাবেস টেবিল থেকে প্রাইমারি কী দিয়ে একক রেকর্ড ফেচ করে।

$post = Post::find(1);

if ($post) {
    echo $post->title;
}

Enter fullscreen mode Exit fullscreen mode

ii) findOrFail() মেথড:

যদি রেকর্ড না পাওয়া যায়, তাহলে এটি 404 HTTP Exception ছুড়ে দেয়।

$post = Post::findOrFail(1);

Enter fullscreen mode Exit fullscreen mode

iii) first() মেথড:

প্রথম রেকর্ড রিট্রিভ করে।

$post = Post::where('status', 'published')->first();

Enter fullscreen mode Exit fullscreen mode

iv) firstOrFail() মেথড:

প্রথম রেকর্ড না পেলে 404 HTTP Exception দেয়।

$post = Post::where('status', 'published')->firstOrFail();

Enter fullscreen mode Exit fullscreen mode

৩. নির্দিষ্ট রেকর্ড রিট্রিভ করা (Query Constraints)

ডাটাবেস থেকে নির্দিষ্ট রেকর্ড ফিল্টার করার জন্য where এবং অন্যান্য কন্ডিশন ব্যবহার করা হয়।

i) where মেথড:

$posts = Post::where('status', 'published')->get();

Enter fullscreen mode Exit fullscreen mode

ii) একাধিক কন্ডিশন:

$posts = Post::where('status', 'published')
             ->where('user_id', 1)
             ->get();

Enter fullscreen mode Exit fullscreen mode

iii) orWhere মেথড:

$posts = Post::where('status', 'published')
             ->orWhere('status', 'draft')
             ->get();

Enter fullscreen mode Exit fullscreen mode

৪. নির্দিষ্ট কলাম রিট্রিভ করা

ডিফল্টভাবে, Eloquent সমস্ত কলাম রিট্রিভ করে। নির্দিষ্ট কলাম পেতে select() ব্যবহার করা হয়।

$posts = Post::select('title', 'content')->get();

Enter fullscreen mode Exit fullscreen mode

৫. পেজিনেশন (Paginate Records)

paginate() মেথড ব্যবহার করে রেকর্ড পেজিনেট করা যায়।

$posts = Post::paginate(10);

Enter fullscreen mode Exit fullscreen mode

পেজিনেশনের লিঙ্ক দেখানোর জন্য Blade টেমপ্লেটে:

{{ $posts->links() }}

Enter fullscreen mode Exit fullscreen mode

৬. চাঙ্কিং (Chunking)

অনেক ডেটা থাকলে এটি মেমোরি ব্যবহার কমানোর জন্য উপযোগী।

Post::chunk(100, function ($posts) {
    foreach ($posts as $post) {
        echo $post->title;
    }
});

Enter fullscreen mode Exit fullscreen mode

৭. রেকর্ড অর্ডার করা (Ordering Results)

ডাটাবেসের রেকর্ডগুলোকে নির্দিষ্ট ক্রমে রিট্রিভ করতে orderBy() মেথড ব্যবহার করা হয়।

$posts = Post::orderBy('created_at', 'desc')->get();

Enter fullscreen mode Exit fullscreen mode

৮. লিমিট এবং অফসেট

নির্দিষ্ট সংখ্যক রেকর্ড পেতে take() বা limit() এবং skip() ব্যবহার করা হয়।

$posts = Post::take(5)->get(); // প্রথম ৫টি রেকর্ড
$posts = Post::skip(10)->take(5)->get(); // ১০টি স্কিপ করে পরের ৫টি

Enter fullscreen mode Exit fullscreen mode

৯. অ্যাগ্রিগেট মেথডস (Aggregates)

i) কাউন্ট:

$count = Post::count();

Enter fullscreen mode Exit fullscreen mode

ii) ম্যাক্স:

$maxViews = Post::max('views');

Enter fullscreen mode Exit fullscreen mode

iii) মিন:

$minViews = Post::min('views');

Enter fullscreen mode Exit fullscreen mode

iv) এভারেজ:

$avgViews = Post::avg('views');

Enter fullscreen mode Exit fullscreen mode

v) টোটাল:

$totalViews = Post::sum('views');

Enter fullscreen mode Exit fullscreen mode

১০. কাস্টম রিলেশনশিপ রেট্রিভাল

Eloquent সম্পর্ক ব্যবহার করে অন্যান্য মডেলের ডেটা রিট্রিভ করা সম্ভব।

i) লোড রিলেশনশিপ (Eager Loading):

$posts = Post::with('comments')->get();

Enter fullscreen mode Exit fullscreen mode

ii) নির্দিষ্ট রিলেশনশিপ:

$posts = Post::with(['comments', 'user'])->get();

Enter fullscreen mode Exit fullscreen mode

১১. র এবং র ফার্স্ট মেথড (Raw Queries)

Laravel-এর DB ফ্যাসেড দিয়ে কাস্টম SQL ব্যবহার করা যায়।

use Illuminate\Support\Facades\DB;

$posts = DB::select('SELECT * FROM posts WHERE status = ?', ['published']);

Enter fullscreen mode Exit fullscreen mode

Top comments (0)