اذهب إلى المحتوى

السؤال

نشر

كيف حالكم ؟

حابة استفسر عن موضوع في حال انا عندي مشروع شغال وانطلب تعديل مني وهالتعديل يلزمه حقل اضافي
كيف اضيف هذا الحقل بوجود بيانات دون ان افقد البيانات الموجودة في الداتابيز ؟

وماهي افضل الطرق والممارسات المتبعة لذلك؟

 

Recommended Posts

  • 0
نشر

إن كان المشروع قيد الإطلاق، يٌفضل أخذ نُسخ إحتياطية لقاعدة البيانات بشكل دوري، حتى يتم الرجوع لها عند الحاجة أو في حالة حدوث مشكلة ما. يمكنك الإستفادةمن هذه المساهمة لتحقيق ذلك:

أيضاً إن كان المشروع قيد الإطلاق يُفضل العمل على نُسخة تجريبية بعيداً عن النُسخة الأساسية للمشروع، وعدم إيداع التعديلات الجديدة إلا عند التأكد من عملها بشكل سليم.

لإضافة حقل جديد في جدول به بيانات يُمكنك إضافة الحقل بشكل يدوي من خلال البرنامج التفاعلي لإدارة قواعد البيانات الذي يتم إستخدامه أو عبر سطر الأوامر، أو يمكنك ذلك من خلال إضافة ملف تهجير جديد يقوم بهذه العملية ثم تنفيذ عملية التهجير و الشرح موجود في هذه المساهمة:

  • 0
نشر (معدل)

قم بإنشاء نسخة احتياطية من بياناتك (تصديرها) قبل القيام بالتغييرات وذلك في حال استخدام MySql بطريقة بسيطة  بالذهاب الى phpmyadmin واختبار قاعدة البيانات المطلوبة وثم القيام بصدير ينتج ملف ذو لاحقة sql توجد فيه نسخة احطياتية لبياناتك ويوجد طرق اخرى لكن هذه اسهل واحدة  .

image.thumb.png.7222f58906d81a197e6c5753387181cf.png

وعندما تريد استردادها قم بimport الى قاعدة بيانات فارغة واختيار الملف الذي قمت بتصديره مسبقا.

يمكن اضافة الحقل الجديد دون مشاكل عبر طريقتين نعطي مثال اضافة phone_number الى نموذج ال User وداخل تابع up قم باضافة الحق الجديد عن طريق :

  • اضافة الحقل  في ملف الترحيل لكن يجب وضع له قيمة افتراضية مما يعطي كل البيانات القديمة هذه القيمة الافتراضية:

قم باجراء التعليمة التي تقوم بانشاء ملفmigration جديد يوجد في المسار database/migrations


php artisan make:migration add_phone_number_users_table

ثم  وضع قيمة افتراضية داخل الجدول الاتي ولتكن 55555 

public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->integer('phone_number')->default(55555);
    });
}

ينتج اضافة حقل جديد لكل البيانات القديمة مع قيمة 55555 لكل المستخدمين .

  • او بوضع الحقل اسمح بان يكون null  عبر 
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->integer('phone_number')->nullable();
    });
}

ينتج اضافة حقل جديد لكل البيانات القديمة تأخذ قيمة null لكل المستخدمين .

بعدها تنفيذ امر تهجير البيانات 

php artisan migrate

وهذا تكون اضفت حقل جديد دون التاثير على البيانات  

تم التعديل في بواسطة Ali Ibrahim12

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...