Laravel

Eloquent: The Untold History Behind Laravel’s Magical ORM

Md Ruhin Mia
04 Dec, 2025
1 min read
78 views
Eloquent: The Untold History Behind Laravel’s Magical ORM

🚀 Laravel-এর ম্যাজিক: একটি Model কীভাবে ডাটাবেজের সাথে কথা বলে?

Laravel শেখার সময় সবচেয়ে মুগ্ধ করার জিনিসগুলোর একটি হলো Eloquent Model। কারণ, মাত্র এক লাইন কোডেই আপনি ডাটাবেস থেকে ডাটা এনে ফেলতে পারেন!

$users = User::where('active', 1)->get();

দেখতে ম্যাজিক লাগলেও আসলে সবটাই খুব পরিকল্পিত আর্কিটেকচার। চলুন, এই ম্যাজিকের পেছনের পুরো প্রক্রিয়াটি সহজ ভাষায় বুঝে নেই।

Laravel-এর অভ্যন্তরে কাজ করে একটি “কারখানা” যেখানে আলাদা আলাদা কর্মী ও তাদের ভূমিকা রয়েছে:

  • Eloquent Model = ম্যানেজার

  • Query Builder = সুপারভাইজার

  • Grammar = দক্ষ কর্মী

  • PDO = ডেলিভারি ম্যান

এবার দেখি $users = User::where('active', 1)->get(); এই লাইনটি প্রসেস করতে তারা কীভাবে কাজ করে।


🔵 ধাপ ১: ম্যানেজারের নির্দেশ (Eloquent Model)

User::where('active', 1) লিখলে আপনি মডেলকে (ম্যানেজারকে) নির্দেশ দেন:

“আমাকে সক্রিয় ইউজারদের লিস্ট দাও।”

ম্যানেজার সরাসরি কাজ করে না। সে নির্দেশটি Query Builder, অর্থাৎ সুপারভাইজারের কাছে পাঠিয়ে দেয়।


🟣 ধাপ ২: সুপারভাইজারের পরিকল্পনা (Query Builder)

Query Builder নির্দেশ পাওয়ার পর একটি পরিকল্পনা তৈরি করে:

  • টেবিল: users

  • শর্ত: active = 1

এখনো SQL তৈরি হয়নি। সুপারভাইজার কেবল প্ল্যান/ইনস্ট্রাকশন জমা করে রাখছে।


🟠 ধাপ ৩: দক্ষ কর্মীর অনুবাদ (Grammar)

যখন আপনি ->get() কল করেন, তখন সুপারভাইজার তার পরিকল্পনা Grammar-এর হাতে তুলে দেয় এবং বলে:

“এই ডেটা অনুযায়ী আসল SQL তৈরি করো।”

Grammar জানে কোন ডাটাবেস ব্যবহার হচ্ছে—MySQL, PostgreSQL, SQLite এবং সে সেই ভাষাতেই SQL বানায়।

আপনার প্রোজেক্টের `.env` ফাইলে যদি `DB_CONNECTION=mysql` লেখা থাকে, তাহলে সে MySQL-এর ভাষায় নির্দেশ লিখবে। যদি `postgresql` লেখা থাকতো, সে PostgreSQL-এর ভাষায় লিখতো।

যদি MySQL ব্যবহার করেন, তাহলে MySqlGrammar নিচের SQL জেনারেট করে:

SELECT * FROM `users` WHERE `active` = ?

? হলো placeholder, যেখানে PDO নিরাপদে 1 বসিয়ে দেয় , যা SQL Injection প্রতিরোধ করে।

🗂️ Grammar ক্লাস কোথায় থাকে?

ঠিক এখানেই:

vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/

এগুলো শুধু দেখার জন্য পরিবর্তন একদমই করা যাবে না।


🔴 ধাপ ৪: ডেলিভারি ম্যানের কাজ (PDO)

Grammar থেকে SQL পেয়ে Query Builder সেটি দেয় PDO-কে।
PDO হলো PHP-এর ডাটাবেস কমিউনিকেশন এক্সটেনশন।

PDO:

  1. SQL এবং ভ্যালু (1) ডাটাবেসে পাঠায়

  2. কোয়েরি চালায়

  3. র (raw) ডাটা ফিরিয়ে আনে


🟢 ধাপ ৫: প্যাকেজিং এবং ডাটা রিটার্ন

PDO যে র ডাটা এনেছে, Query Builder সেটিকে সুন্দরভাবে প্যাকেজ করে:

  • প্রতিটি রো → একটি করে User অবজেক্ট

  • পুরো লিস্ট → একটি Laravel Collection

শেষে ম্যানেজার (Eloquent) আপনাকে রেজাল্ট দিয়ে দেয় $users ভেরিয়েবলের মাধ্যমে।


⚡ সারসংক্ষেপ

Laravel-এর Eloquent কাজ করে এভাবে:

আপনার কোড → Eloquent (ম্যানেজার) → Query Builder (সুপারভাইজার) → Grammar (দক্ষ কর্মী) → PDO (ডেলিভারি ম্যান) → ডাটাবেস

এই প্রক্রিয়া জানলে—

  • কেন Eager Loading গুরুত্বপূর্ণ

  • কেন একই কোড MySQL/PostgreSQL দুটোতেই কাজ করে

  • Laravel কীভাবে Query Optimized করে

এসব সহজে বুঝতে পারবেন।


😊 শেষ কথা

Laravel-এ যখনই আপনি User::all() বা ->get() লিখবেন, এই কারখানার পুরো workflow মনে রাখুন—তাহলেই “ম্যাজিকের” পেছনের রহস্য আরও পরিষ্কার হয়ে যাবে।

কেমন লাগল জানাতে ভুলবেন না কমেন্টে! 🚀

Happy Coding! 🐞

Comments (0)

You need to login to comment

Login

No comments yet. Be the first to comment!