في هذا الدرس 6تصفّح المواضيع
يطبق نظام Eloquent ORM في Laravel نمط السجل النشط Active Record، حيث يرتبط كل جدول في قاعدة البيانات بكلاس نموذج مستقل داخل مجلد app/Models. يتيح أمر make:model مع الخيار -m توليد كلاس النموذج بالمفرد وملف تهجير الجدول بالجمع في خطوة واحدة.
- نمط السجل النشط (Active Record): يمثل كل كائن من النموذج صفاً كاملاً في الجدول مزوداً بدوال الاستعلام والحفظ.
- التوليد المزدوج (make:model -m): إنشاء ملف النموذج وملف تهجير الجدول المقابل له في أمر واحد.
- الربط التلقائي (Plural Convention): ربط اسم الكلاس المفرد Post تلقائياً بجدول الجمع posts دون إعدادات إضافية.
// php artisan make:model Flight -m
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Flight extends Model
{
}
رغم أن اصطلاحات Eloquent الافتراضية تناسب معظم الجداول الجديدة، إلا أن قواعد البيانات القديمة قد تستخدم أسماء جداول أو مفاتيح مختلفة. يمكنك تخصيص اسم الجدول والمفتاح الأساسي ونوعه وإيقاف الطوابع الزمنية بسهولة عبر تعريف خصائص محمية داخل النموذج.
- تخصيص اسم الجدول ($table): تحديد اسم الجدول صراحةً عندما لا يتبع قاعدة الجمع القياسية.
- تخصيص المفتاح ($primaryKey & $keyType): تغيير اسم عمود المعرف الأساسي وتحديد نوعه النصي عند عدم كونه رقمياً.
- إيقاف الطوابع ($timestamps = false): تعطيل إدارة عمودي تاريخ الإنشاء والتحديث للجداول التي لا تحتوي عليهما.
class LegacyAirport extends Model
{
protected $table = 'airports_catalog';
protected $primaryKey = 'iata_code';
public $incrementing = false;
protected $keyType = 'string';
public $timestamps = false;
}
يعمل كل نموذج Eloquent كباني استعلامات متكامل يدعم دوال all و where و first و find. وعند البحث عن سجل بناءً على معامل قادم من الرابط، استخدم دالة findOrFail أو firstOrFail ليعيد Laravel صفحة خطأ 404 تلقائياً في حال عدم وجود السجل.
- استعلام النماذج (all & where): استرجاع النتائج ككائنات كاملة من كلاس النموذج بدلاً من كائنات قياسية مجردة.
- البحث الآمن بالمعرف (findOrFail): جلب النموذج بمعرفه الأساسي أو إرجاع استجابة 404 فوراً عند غيابه.
- أول سجل أو 404 (firstOrFail): جلب أول سجل يطابق شروط البحث أو إطلاق استثناء 404 تلقائياً.
use App\Models\Flight;
$flight = Flight::findOrFail($id);
$active = Flight::where('is_active', true)
->orderBy('number')
->get();
تعيد استعلامات Eloquent المتعددة مثل get و all كائناً من نوع Eloquent Collection الذي يوسع مجموعة Laravel القياسية بمزايا خاصة بالنماذج. فبالإضافة إلى دوال المعالجة مثل filter و map، توفر المجموعة دوال ذكية مثل modelKeys لاستخراج مصفوفة المعرفات الأساسية.
- مجموعة النماذج (Eloquent Collection): كائن مجموعة متخصص يغلف النماذج المسترجعة ويدعم التكرار والدوال المتسلسلة.
- استخراج المعرفات (modelKeys): إرجاع مصفوفة تضم كافة أرقام المعرفات الأساسية للنماذج المحملة في المجموعة.
- فحص الامتلاء (isEmpty & isNotEmpty): التحقق بوضوح من وجود نتائج داخل المجموعة قبل عرضها.
$flights = Flight::where('delayed', false)->get();
$ids = $flights->modelKeys();
$codes = $flights->pluck('code');
$hasAny = $flights->isNotEmpty();
إن إنشاء مسارات وقوالب عرض لمجرد تجربة استعلام نموذج جديد يستهلك وقتاً غير ضروري أثناء التطوير. يفتح الأمر php artisan tinker بيئة سطر أوامر تفاعلية محملة بكامل إطار Laravel تتيح لك تشغيل استعلامات Eloquent وفحص الكائنات مباشرة في الطرفية.
- البيئة التفاعلية (php artisan tinker): تشغيل مفسر أوامر تفاعلي حي متصل بقاعدة بيانات وإعدادات مشروعك.
- الاختصار التلقائي للنماذج: يتعرف Tinker تلقائياً على كلاسات مجلد app/Models دون الحاجة لكتابة مسار الفضاء الكامل.
- معاينة فورية: تجربة دوال الاستعلام والمجموعات ورؤية الكائنات الناتجة منسقة على الشاشة في أجزاء من الثانية.
# Launch interactive REPL session in terminal
php artisan tinker
>>> Flight::count()
>>> Flight::where('is_active', true)->first()
>>> exit
يبقي الالتزام باصطلاحات التسمية القياسية كلاسات النماذج مختصرة ونظيفة مع منحك المرونة الكاملة لتخصيص الجداول والمفاتيح عند الحاجة. استعن بهذا الجدول المرجعي لمراجعة خصائص تهيئة النموذج ودوال البحث الآمن وأوامر التجريب التفاعلي.
| وجه المقارنة الهندسي | الأسلوب اليدوي أو غير المحمي | معيار Laravel 12 الحديث |
|---|---|---|
| تمثيل السجلات | مصفوفات عادية أو كائنات stdClass مجردة من المنطق | كلاسات نماذج غنية ترث الفئة الأساسية Model |
| معالجة السجل المفقود | كتابة شروط فحص يدوية لإرجاع كود الخطأ 404 في كل دالة | إرجاع استجابة 404 تلقائياً عبر دالتي findOrFail و firstOrFail |
| مجموعات النتائج | مصفوفات بدائية تتطلب حلقات تكرارية لاستخلاص المعرفات | كائن Eloquent Collection يوفر دوال modelKeys و pluck الجاهزة |
| تجريب الاستعلامات | إنشاء مسارات مؤقتة وتحديث المتصفح لاختبار كل استعلام | تجريب فوري وتفاعلي من الطرفية عبر أمر php artisan tinker |
public function show(string $id)
{
$flight = Flight::findOrFail($id);
return view('flights.show', [
'flight' => $flight,
]);
}
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس حول «تعريف نماذج Eloquent واصطلاحاتها والتجريب عبر Tinker» مفاهيم نمط السجل النشط ومعمارية Eloquent، واصطلاحات الجداول والمفاتيح والطوابع، واستعلام النماذج ودالة findOrFail وفق معايير Laravel 12 الحديثة.
الخطوة التالية والدرس القادم
انتقل الآن إلى الدرس التالي «إنشاء وتحديث النماذج والحماية من ثغرة الإسناد الجماعي» للبناء التراكمي على ما تعلمته.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Eloquent Models تعريف النماذج
- إنشاء نماذج Eloquent ORM وضبط اصطلاحات الجداول واسترجاع السجلات بـ findOrFail وتجربتها تفاعلياً عبر Tinker.
- للمراجعة
- 02 Active Record Pattern and Eloquent نمط السجل النشط ومعمارية Eloquent
- المفهوم الهندسي والتطبيق العملي المباشر لقسم نمط السجل النشط ومعمارية Eloquent في إطار العمل Laravel 12.
- للمراجعة
- 03 Table and Primary Key Conventions اصطلاحات الجداول والمفاتيح والطوابع
- المفهوم الهندسي والتطبيق العملي المباشر لقسم اصطلاحات الجداول والمفاتيح والطوابع في إطار العمل Laravel 12.
- للمراجعة
- 04 Querying Models and Handling NotFound استعلام النماذج ودالة findOrFail
- المفهوم الهندسي والتطبيق العملي المباشر لقسم استعلام النماذج ودالة findOrFail في إطار العمل Laravel 12.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 MVC MVC
- Model View Controller
- النمط المعماري الذي يفصل بين نماذج البيانات Models، وطبقات العرض Views، والمتحكمات Controllers في Laravel.
- للمراجعة
- 02 CLI CLI
- Command Line Interface
- واجهة سطر الأوامر التي تعمل عبر أداة php artisan لتوليد الملفات وإدارة التطبيق.
- للمراجعة
- 03 HTTP HTTP
- Hypertext Transfer Protocol
- بروتوكول نقل النص الفائق الذي ينظم طلبات المتصفح واستجابات خادم Laravel.
- للمراجعة
- 04 PSR PSR
- PHP Standards Recommendations
- المعايير القياسية للغة PHP مثل التحميل التلقائي PSR-4 التي يلتزم بها إطار العمل Laravel.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
اكتب ونفّذ المثال البرمجي المشروح في قسم «نمط السجل النشط ومعمارية Eloquent» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «اصطلاحات الجداول والمفاتيح والطوابع» وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
ما الهدف الهندسي الأساسي من نمط السجل النشط ومعمارية Eloquent في إطار العمل Laravel 12؟
يسهم نمط السجل النشط ومعمارية Eloquent في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.
يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «اصطلاحات الجداول والمفاتيح والطوابع» على رفع جودة الكود وسهولة اختباره آلياً.
صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.
أي آلية في Laravel 12 تتولى إدارة استعلام النماذج ودالة findOrFail بشكل مباشر ومنظم؟
توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة استعلام النماذج ودالة findOrFail.
لماذا يُعد تطبيق التعامل مع مجموعات نماذج Eloquent مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟
لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.
في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.
خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.
ما المزايا الهندسية التي يحققها تطبيق التجريب التفاعلي للنماذج عبر Tinker في Laravel 12؟ (اختر كل ما ينطبق)
يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.
يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.
صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.
ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في ملخص خصائص واستعلامات نماذج Eloquent؟
يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.