انتقل إلى محتوى الدرس
الدرس 30
دورة إطار العمل Laravel

بناء الجداول وأنواع الأعمدة ومعدلاتها عبر Schema BuilderSchema Builder Column Types and Column Modifiers

تصميم أعمدة الجداول عبر Schema::create واختيار أنواع البيانات المناسبة وإضافة معدلات القيم الافتراضية والتفرد.
أقسام الدرس
6
الأمثلة
6
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

تستقبل دالة Schema::create اسم الجدول ودالة مغلقة تمرر كائناً من نوع Blueprint لبناء هيكل الجدول برمجياً. ينشئ استدعاء الدالة id مفتاحاً أساسياً رقمياً متزايداً من نوع BIGINT UNSIGNED، بينما توفر دالة uuid معرفات نصية فريدة عالمياً.

  • كائن البناء (Blueprint): الكائن المسؤول عن تحويل أوامر PHP السلسة إلى جمل SQL موافقة لمحرك القاعدة.
  • المعرف القياسي ($table->id): اختصار لإنشاء عمود المفتاح الأساسي الرقمي المتزايد تلقائياً.
  • المعرف العالمي ($table->uuid): إنشاء عمود مخصص لتخزين المعرفات الفريدة عالمياً بطول 36 حرفاً.
مخطط معماري يوضح بناء الجداول وأنواع الأعمدة ومعدلاتها عبر Schema Builder في إطار العمل Laravel 12
PHP
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

Schema::create('products', function (Blueprint $table) {
    $table->id();
    $table->uuid('public_id');
});

يسهم اختيار نوع العمود المناسب في تقليل استهلاك المساحة وتسريع عمليات الفهرسة والبحث في قاعدة البيانات. استخدم دالة string للنصوص القصيرة كالعناوين، ودالة text للمقالات الطويلة، ودالة integer للعدادات، ودالة decimal بدقة محددة للمبالغ المالية.

  • النصوص القصيرة (string): إنشاء عمود VARCHAR بطول افتراضي 255 حرفاً أو بطول مخصص.
  • النصوص الطويلة (text): إنشاء عمود TEXT مخصص لتخزين المحتوى النصي الطويل والمقالات.
  • القيم المالية (decimal): تخزين المبالغ المالية بدقة عشرية ثابتة تمنع أخطاء التقريب العشري.
PHP
Schema::create('items', function (Blueprint $table) {
    $table->id();
    $table->string('title', 160);
    $table->text('description');
    $table->integer('stock_count');
    $table->decimal('price', 10, 2);
});

يتطلب تتبع حالات التفعيل والأحداث الزمنية استخدام الأعمدة المنطقية وأعمدة التواريخ والأوقات المخصصة. تنشئ دالة boolean عموداً منطقياً مضغوطاً، بينما تضيف الدالة المختصرة timestamps عمودي تاريخ الإنشاء وتاريخ آخر تحديث تلقائياً.

  • الحقل المنطقي (boolean): تخزين القيم المنطقية صح أو خطأ لتمثيل حالات النشر والتفعيل.
  • التاريخ والوقت (date & timestamp): تخزين التواريخ اليومية أو الطوابع الزمنية الدقيقة للأحداث.
  • طابعا الإنشاء والتحديث (timestamps): إضافة عمودي created_at و updated_at اللذين يديرهما الإطار تلقائياً.
PHP
Schema::create('plans', function (Blueprint $table) {
    $table->id();
    $table->boolean('is_active');
    $table->date('starts_on');
    $table->timestamp('verified_at');
    $table->timestamps();
});

تدعم قواعد البيانات العلائقية الحديثة تخزين مستندات JSON المهيكلة إلى جانب قوائم القيم الثابتة المحددة مسبقاً. توفر دالة json عموداً أصلياً لحفظ الخصائص المرنة المتغيرة، بينما تقيد دالة enum قيم العمود بمصفوفة مغلقة من الحالات المسموحة.

  • بيانات مهيكلة (json): إنشاء عمود JSON أصلي لتخزين الإعدادات الديناميكية أو الخصائص الإضافية المرنة.
  • القائمة الثابتة (enum): تقييد العمود على مستوى قاعدة البيانات ليقبل فقط القيم النصية المحددة بالمصفوفة.
  • النمذجة الهجينة (Hybrid Modeling): الجمع بين الأعمدة العلائقية الصارمة للبحث ومرونة JSON للتفاصيل المتغيرة.
PHP
Schema::create('orders', function (Blueprint $table) {
    $table->id();
    $table->enum('status', ['new', 'paid', 'sent']);
    $table->json('shipping_meta');
    $table->timestamps();
});

تعيد كل دالة تعريف عمود في Blueprint كائناً يقبل ربط المعدلات المتسلسلة لضبط قيود العمود بدقة. يمكنك السماح بالقيم الخالية عبر nullable، أو تعيين قيمة افتراضية عبر default، أو فرض عدم التكرار عبر unique، أو توثيق وظيفة العمود عبر comment.

  • قبول الفراغ (nullable): السماح بتخزين القيمة NULL في العمود بدلاً من قيد الإلزام الافتراضي NOT NULL.
  • القيمة الافتراضية (default): تحديد قيمة تلقائية تسجلها قاعدة البيانات عند عدم تمرير قيمة للعمود.
  • التفرد والأعداد الموجبة (unique & unsigned): منع تكرار القيمة في الجدول أو قصر الأرقام على القيم الموجبة.
PHP
Schema::create('coupons', function (Blueprint $table) {
    $table->id();
    $table->string('code', 32)->unique();
    $table->integer('max_uses')->default(100);
    $table->timestamp('expires_at')->nullable();
    $table->string('note')->comment('Promo note');
});

إن الجمع بين أنواع الأعمدة الدقيقة والمعدلات السلسة ينتج جداول قواعد بيانات موثقة ذاتياً ومحمية بالقيود في كافة البيئات. ارجع إلى هذا الجدول الملخص عند تصميم جداول الكيانات الجديدة في ملفات تهجير Laravel 12.

وجه المقارنة الهندسيالأسلوب اليدوي أو غير المحميمعيار Laravel 12 الحديث
المفاتيح الأساسيةكتابة جملة المفتاح المتزايد يدوياً بصيغة تختلف لكل محركاستدعاء موحد وبسيط عبر $table->id أو $table->uuid
تخزين المبالغ الماليةاستخدام أعمدة عشرية عائمة تسبب أخطاء في الكسورتخزين عشري دقيق وثابت عبر $table->decimal('price', 10, 2)
طوابع التتبع الزمنيإنشاء عمودي تاريخ الإنشاء والتحديث يدوياً في كل جدولاستدعاء واحد للدالة $table->timestamps يضيف العمودين معاً
قيود الأعمدةترتيب قيود SQL الخام يدوياً مع احتمال أخطاء الصياغةربط متسلسل واضح للمعدلات مثل nullable و default و unique
PHP
Schema::create('articles', function (Blueprint $table) {
    $table->id();
    $table->string('slug', 140)->unique();
    $table->boolean('is_featured')->default(false);
    $table->timestamps();
});
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس حول «بناء الجداول وأنواع الأعمدة ومعدلاتها عبر Schema Builder» مفاهيم إنشاء الجداول عبر كائن Blueprint، وأعمدة النصوص والأعداد والقيم المالية، والأعمدة المنطقية والتواريخ والأوقات وفق معايير Laravel 12 الحديثة.

الخطوة التالية والدرس القادم

انتقل الآن إلى الدرس التالي «تعديل الجداول والفهارس وقيود المفاتيح الأجنبية في Laravel» للبناء التراكمي على ما تعلمته.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Schema Builder باني الجداول
تصميم أعمدة الجداول عبر Schema::create واختيار أنواع البيانات المناسبة وإضافة معدلات القيم الافتراضية والتفرد.
للمراجعة
02 Creating Tables with Schema Blueprint إنشاء الجداول عبر كائن Blueprint
المفهوم الهندسي والتطبيق العملي المباشر لقسم إنشاء الجداول عبر كائن Blueprint في إطار العمل Laravel 12.
للمراجعة
03 String Text and Numeric Columns أعمدة النصوص والأعداد والقيم المالية
المفهوم الهندسي والتطبيق العملي المباشر لقسم أعمدة النصوص والأعداد والقيم المالية في إطار العمل Laravel 12.
للمراجعة
04 Boolean Date and Timestamp Columns الأعمدة المنطقية والتواريخ والأوقات
المفهوم الهندسي والتطبيق العملي المباشر لقسم الأعمدة المنطقية والتواريخ والأوقات في إطار العمل Laravel 12.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 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.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. اكتب ونفّذ المثال البرمجي المشروح في قسم «إنشاء الجداول عبر كائن Blueprint» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «أعمدة النصوص والأعداد والقيم المالية» وقارن مخرجات التنفيذ.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 3أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما الهدف الهندسي الأساسي من إنشاء الجداول عبر كائن Blueprint في إطار العمل Laravel 12؟

يسهم إنشاء الجداول عبر كائن Blueprint في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.

02

يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «أعمدة النصوص والأعداد والقيم المالية» على رفع جودة الكود وسهولة اختباره آلياً.

صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.

03

أي آلية في Laravel 12 تتولى إدارة الأعمدة المنطقية والتواريخ والأوقات بشكل مباشر ومنظم؟

توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة الأعمدة المنطقية والتواريخ والأوقات.

04

لماذا يُعد تطبيق أعمدة بيانات JSON والقوائم المحددة مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟

لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.

05

في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.

خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.

06

ما المزايا الهندسية التي يحققها تطبيق ربط معدلات الأعمدة والقيم الافتراضية في Laravel 12؟ (اختر كل ما ينطبق)

يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.

07

يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.

صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.

08

ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في ملخص أنواع الأعمدة ومعدلات الجداول؟

يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.