في هذا الدرس 6تصفّح المواضيع
تعيد ملفات التهجير الحديثة في Laravel كائناً من فئة مجهولة الاسم مما يمنع تماماً حدوث أي تعارض في أسماء الكلاسات عند تكرار التعديلات. يتيح استخدام أمر make:migration مع التسمية القياسية توليد الكود المبدئي لإنشاء الجدول أو تعديله تلقائياً.
- الفئة المجهولة (Anonymous Class): استخدام صيغة new class extends Migration لمنع تصادم أسماء الكلاسات.
- خيار الإنشاء (--create): يجهز كود إنشاء الجدول وحذفه العكسي تلقائياً داخل الملف المولد.
- خيار التعديل (--table): يجهز قالب تعديل جدول قائم مسبقاً عبر الواجهة Schema::table.
# Generate create and alter migrations via Artisan
php artisan make:migration create_flights_table
php artisan make:migration add_code_to_flights \
--table=flights
تضم كل فئة تهجير دالتين متقابلتين: دالة up لتطبيق التغيير البنائي الجديد، ودالة down لعكس ذلك التغيير بدقة. إن كتابة دالة down بشكل سليم باستخدام Schema::dropIfExists تضمن قدرة الفريق على التراجع الآمن عن أي تحديث خاطئ دون ترك جداول معطوبة.
- دالة البناء (up): تعمل عند تشغيل أمر التهجير لإنشاء الجداول أو إضافة الأعمدة الجديدة.
- دالة التراجع (down): تعمل عند التراجع عن التهجير لإلغاء التغييرات التي أحدثتها دالة up تماماً.
- الحذف الآمن (dropIfExists): إزالة الجدول عند التراجع بأمان دون إطلاق خطأ إن لم يكن الجدول موجوداً.
public function up(): void {
Schema::create('tags', function ($table) {
$table->id();
});
}
public function down(): void {
Schema::dropIfExists('tags');
}
يقوم الأمر php artisan migrate بفحص مجلد التهجيرات وتشغيل كافة الملفات المعلقة بترتيبها الزمني وتسجيلها تحت رقم دفعة جديد. وإذا أردت معاينة جمل SQL الفعلية التي سيولدها التهجير دون المساس بقاعدة البيانات، مرر الخيار --pretend.
- تشغيل التهجيرات (migrate): تنفيذ جميع الملفات المعلقة وتوثيقها برقم دفعة جديد في جدول التتبع.
- المعاينة الجافة (--pretend): طباعة استعلامات SQL المترجمة في الطرفية للمراجعة دون تنفيذها فعلياً.
- التأكيد الإنتاجي (--force): خيار إلزامي لتأكيد تشغيل التهجيرات الجديدة داخل خوادم الإنتاج.
# Preview SQL queries first, then apply migrations
php artisan migrate:status
php artisan migrate --pretend
php artisan migrate
عندما تحتاج لتعديل تهجير شغلته للتو أثناء التطوير، يقوم الأمر migrate:rollback بالتراجع عن آخر دفعة تهجير عبر استدعاء دوال down الخاصة بها. ويمكنك أيضاً تحديد عدد دقيق من الملفات للتراجع عنها باستخدام الخيار --step أو معاينة SQL عبر --pretend.
- التراجع عن الدفعة (migrate:rollback): إلغاء كافة التهجيرات المسجلة ضمن آخر رقم دفعة في جدول التتبع.
- التراجع بالخطوات (--step): التراجع عن عدد محدد من ملفات التهجير الأخيرة بغض النظر عن رقم دفعتها.
- التراجع الكامل (migrate:reset): استدعاء دالة down لجميع التهجيرات المنفذة في المشروع بترتيب عكسي.
# Roll back the last batch or a single migration step
php artisan migrate:rollback
php artisan migrate:rollback --step=1
php artisan migrate:rollback --pretend
أثناء المراحل الأولى للتطوير المحلي، كثيراً ما تحتاج لإعادة بناء كافة الجداول من الصفر على قاعدة نظيفة. وبينما يستدعي أمر migrate:refresh دوال down أولاً، يقوم أمر migrate:fresh بحذف جميع الجداول مباشرة وبسرعة فائقة قبل إعادة تشغيل دوال up.
- التصفير المباشر (migrate:fresh): إسقاط جميع جداول القاعدة فوراً وإعادة تشغيل كافة التهجيرات من البداية.
- التحديث المتسلسل (migrate:refresh): تشغيل دوال down لجميع الملفات أولاً ثم إعادة تشغيل دوال up.
- للتطوير المحلي فقط (Destructive Warning): كلا الأمرين يمسحان كافة البيانات ويحظر تشغيلهما نهائياً في بيئة الإنتاج.
# Local development schema rebuild commands
php artisan migrate:rollback --step=2
php artisan migrate:refresh --step=2
php artisan migrate:fresh
يتيح لك إتقان أوامر دورة حياة التهجير تطوير هيكلة قاعدة البيانات بأمان دون فقدان البيانات أو الإخلال بمزامنة الفريق. احتفظ بهذا المرجع لاختيار أمر التهجير المناسب أثناء التطوير المحلي ومراجعة الكود والنشر في بيئة الإنتاج.
| وجه المقارنة الهندسي | الأسلوب اليدوي أو غير المحمي | معيار Laravel 12 الحديث |
|---|---|---|
| تسمية الكلاسات | كلاسات مسماة قديمة تسبب أخطاء تكرار الاسم | فئات مجهولة الاسم (return new class extends Migration) |
| إمكانية التراجع | كتابة جمل الحذف يدوياً عند وقوع خطأ في الجدول | دالة down متناظرة تُنفذ تلقائياً عبر أمر migrate:rollback |
| معاينة الاستعلامات | تنفيذ جمل التعديل مباشرة دون معرفة أثرها الدقيق | معاينة جمل SQL مسبقاً دون تنفيذ عبر الخيار --pretend |
| إعادة البناء المحلي | حذف الجداول يدوياً واحداً تلو الآخر من واجهة القاعدة | تصفير وإعادة بناء فورية بأمر واحد عبر migrate:fresh |
# Safe forward migration workflow
php artisan migrate:status
php artisan migrate --pretend
php artisan migrate --force
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس حول «إنشاء وتشغيل التهجيرات المجهولة والتراجع عنها في Laravel» مفاهيم توليد ملفات التهجير المجهولة الحديثة، وكتابة دالتي البناء والتراجع العكسي، وتشغيل التهجيرات المعلقة ومعاينة SQL وفق معايير Laravel 12 الحديثة.
الخطوة التالية والدرس القادم
انتقل الآن إلى الدرس التالي «بناء الجداول وأنواع الأعمدة ومعدلاتها عبر Schema Builder» للبناء التراكمي على ما تعلمته.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Running Migrations تشغيل التهجيرات
- توليد ملفات التهجير المجهولة الحديثة وكتابة دالتي البناء up والتراجع down وتشغيل أوامر migrate و rollback.
- للمراجعة
- 02 Generating Anonymous Migration Files توليد ملفات التهجير المجهولة الحديثة
- المفهوم الهندسي والتطبيق العملي المباشر لقسم توليد ملفات التهجير المجهولة الحديثة في إطار العمل Laravel 12.
- للمراجعة
- 03 Reversible Up and Down Methods كتابة دالتي البناء والتراجع العكسي
- المفهوم الهندسي والتطبيق العملي المباشر لقسم كتابة دالتي البناء والتراجع العكسي في إطار العمل Laravel 12.
- للمراجعة
- 04 Executing Pending Database Migrations تشغيل التهجيرات المعلقة ومعاينة SQL
- المفهوم الهندسي والتطبيق العملي المباشر لقسم تشغيل التهجيرات المعلقة ومعاينة SQL في إطار العمل 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.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
اكتب ونفّذ المثال البرمجي المشروح في قسم «توليد ملفات التهجير المجهولة الحديثة» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «كتابة دالتي البناء والتراجع العكسي» وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
ما الهدف الهندسي الأساسي من توليد ملفات التهجير المجهولة الحديثة في إطار العمل Laravel 12؟
يسهم توليد ملفات التهجير المجهولة الحديثة في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.
يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «كتابة دالتي البناء والتراجع العكسي» على رفع جودة الكود وسهولة اختباره آلياً.
صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.
أي آلية في Laravel 12 تتولى إدارة تشغيل التهجيرات المعلقة ومعاينة SQL بشكل مباشر ومنظم؟
توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة تشغيل التهجيرات المعلقة ومعاينة SQL.
لماذا يُعد تطبيق التراجع الآمن عن دفعات التهجير مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟
لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.
في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.
خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.
ما المزايا الهندسية التي يحققها تطبيق تصفير وإعادة بناء جداول التطوير في Laravel 12؟ (اختر كل ما ينطبق)
يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.
يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.
صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.
ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في ملخص أوامر إنشاء وتشغيل التهجيرات؟
يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.