TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 611 subscribers
Post #296 650
فصل چهار - مدل‌ها و Eloquent ORM

بخش اول - معرفی Eloquent

الوکوئنت (Eloquent) یکی از بخش‌های مهم و قدرتمند فریمورک لاراول است که به عنوان ORM (Object-Relational Mapping) عمل می‌کند. ORM یک تکنیک برنامه‌نویسی است که به توسعه‌دهندگان اجازه می‌دهد تا با پایگاه داده به صورت شیء‌گرا کار کنند و جداول پایگاه داده را به کلاس‌های PHP تبدیل کنند.

کارکرد اصلی الوکوئنت:
الکوئنت به شما امکان می‌دهد تا با استفاده از مدل‌های شیء‌گرا (Objects)، داده‌های پایگاه داده را دستکاری کنید. این به شما اجازه می‌دهد که به جای نوشتن کوئری‌های SQL خام، از متدهای شیء‌گرای الوکوئنت استفاده کنید که کد را تمیزتر و قابل‌فهم‌تر می‌کند.

ویژگی‌ها و قابلیت‌های الوکوئنت:
1- تعریف مدل‌ها: در الوکوئنت، هر جدول پایگاه داده با یک مدل مطابقت دارد. این مدل‌ها کلاس‌هایی هستند که رفتارها و ویژگی‌های مرتبط با جداول پایگاه داده را مشخص می‌کنند. همچنین یکی از سه بخش معماری MVC را تشکیل می دهند.

2- روابط: الوکوئنت به شما امکان می‌دهد تا روابط بین جداول را به راحتی تعریف کنید. برای مثال:

ارتباط یک به یک (One to One).
ارتباط یک به چند (One to Many).
ارتباط چند به چند (Many to Many).
ارتباطات چندشکلی که یک مدل می‌تواند با چندین مدل دیگر مرتبط باشد (Polymorphic).

3- اسکوپ‌های عمومی و محلی: می‌توانید کوئری‌های عمومی که به صورت مکرر استفاده می‌شوند را در مدل تعریف کنید (Global Scopes) یا متدهایی ایجاد کنید که اسکوپ‌های محلی را تعریف کنند (Local Scopes).

4- پیمایشگرها و دسترسی‌گرها (Mutators and Accessors): به شما اجازه می‌دهد تا رفتارهای خاصی را هنگام تنظیم یا گرفتن ویژگی‌های یک مدل اعمال کنید.

5- رخدادها (Events): الوکوئنت دارای سیستم رخدادهایی است که شما می‌توانید به آن‌ها گوش دهید و به ازای رویدادهایی مانند creating, updating, deleting و غیره واکنش نشان دهید.

6- کوئری‌سازی شیء‌گرا (Object-Oriented Querying): الکوئنت به شما اجازه می‌دهد تا به جای استفاده از SQL خام، از متدهای شیء‌گرا برای ایجاد کوئری‌ها استفاده کنید. این کوئری‌ها شامل فیلتر کردن، مرتب‌سازی، گروه‌بندی و سایر عملیات‌های پیچیده می‌شود، بدون اینکه نیازی به نوشتن یک خط SQL باشد.

7- مهاجرت‌ها (Migrations) و بذرها (Seeders): در کنار مدل‌های الوکوئنت، لاراول ابزارهایی برای مدیریت ساختار پایگاه داده (مهاجرت‌ها) و پر کردن جداول با داده‌های نمونه (سیدر و فکتوری) فراهم می‌کند. این ابزارها به توسعه‌دهندگان کمک می‌کنند تا به‌راحتی پایگاه داده‌های خود را ایجاد و مدیریت کنند.

8- پشتیبانی از Eager Loading و Lazy Loading: الکوئنت از دو روش برای بارگذاری داده‌های مرتبط با مدل‌ها پشتیبانی می‌کند:

بارگذاری (Eager): این روش به شما امکان می‌دهد داده‌های مرتبط با یک مدل را همزمان با فراخوانی مدل بارگذاری کنید تا از تعداد کوئری‌های اضافی جلوگیری شود.

بارگذاری (Lazy): این روش زمانی داده‌های مرتبط را بارگذاری می‌کند که به آن‌ها نیاز داشته باشید. این ممکن است منجر به ارسال کوئری‌های اضافی به پایگاه داده شود.

9- پشتیبانی از Soft Deletes: الکوئنت امکان (Soft Delete) را فراهم می‌کند که به جای حذف دائمی یک رکورد، آن را "پنهان" می‌کند تا بعداً بتوان آن را بازیابی کرد. این کار از طریق یک فیلد اضافی در جدول انجام می‌شود که تاریخ و زمان حذف را ثبت می‌کند.

10- و...

مزایا و کاربردهای عملی:

استفاده از الوکوئنت باعث می‌شود که کدها به مراتب خواناتر و قابل نگهداری‌تر باشند.

نیاز به نوشتن کوئری‌های SQL به حداقل می‌رسد و توسعه‌دهنده می‌تواند روی منطق برنامه تمرکز کند.

الوکوئنت با ارائه ابزارهایی برای مدیریت روابط بین جداول، پیچیدگی مدیریت این روابط را به طور چشم‌گیری کاهش می‌دهد.

الوکوئنت برای توسعه‌دهندگانی که از لاراول برای ساخت برنامه‌های وب استفاده می‌کنند، ابزاری ضروری است. این ابزار در تمامی جنبه‌های کار با پایگاه داده از جمله تعریف مدل‌ها، روابط، کوئری‌سازی و حتی مدیریت مهاجرت‌های پایگاه داده (Database Migrations) کاربرد دارد.

در نهایت، الوکوئنت به عنوان یکی از ویژگی‌های برجسته لاراول، یک سطح انتزاعی بسیار قوی برای کار با پایگاه داده‌ها فراهم می‌کند که هم کار را سریع‌تر و هم کدها را تمیزتر و قابل نگهداری‌تر می‌سازد.

در بخش های بعدی با تمام موارد نام برده شده به طور مفصل آشنا خواهیم شد.

▫️ 🟠
🔎 #laravel #لاراول #فصل_۴
✅ @AmirhDeveloper
.
  • ❤ 2
  • 👍 1
More from @amirhdeveloper
  1. Sep 30, 2026پکیج LaraGram Sentinel منتشر شد؛ یک پنل مانیتورینگ که هیچ چیزی از زیر دستش در نمی‌ره! تمام…
  2. Sep 23, 2026از امروز با کاهش شدید حاکرها مواجه میشیم
  3. Sep 19, 2026🔴 سوال سوم دو Region دارید: US-East و EU-West. کاربران در هر دو Region هستند. سیستم باید…
  4. Sep 19, 2026🟠 سوال دوم فرض کنید Service A به Service B درخواست می‌زند. B به‌دلیل overload، latency با…
  5. Sep 19, 2026🟢 سوال اول فرض کنید یک سرویس backend داریم که به PostgreSQL وصل می‌شود. تعداد requestها ن…
  6. Sep 19, 2026خیلی وقته پست‌های کانال فقط درمورد LaraGram بوده، وقتشه یکم جالب‌ترش کنیم اگر ممبرها هنوز…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →