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

السؤال

نشر (معدل)
  Schema::create('blogs', function (Blueprint $table) {
            $table->increments('id');
            $table->string("title");
            $table->text('body');
            // $table->unsignedinteger("user_id");
            $table->foreign('user_id')
                    ->references('id')
                    ->on('users')
                    ->delete('cascade');
            $table->timestamps();
        });


  Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });

سويت العلاقه ويقول خطا 

Capture.PNG

تم التعديل في بواسطة Hassan Hedr
توضيح العنوان

Recommended Posts

  • 0
نشر

بما أنك عينت الحقل user_id كمفتاح للربط مع الجدول users يجب أن يتواجد هذا الحقل ضمن الجدول blogs،

قم بإزالة التعليق من سطر تعريف هذا الحقل وتغيير نوعه إلى unsignedBigInteger

// $table->unsignedinteger("user_id");
^^

$table->unsignedBigInteger("user_id");
        ^^^^^^^^^^^^^^^^^^

ثم أعد تنفيذ عملية التهجير في حال كانت لا يوجد بيانات في قاعدة البيانات لديك كالتالي

php artisan migrate:fresh

 

  • 0
نشر

يجب تواجد الحقل user_id قبل إعتماده كمفتاح أجنبي، لذلك يظهر لديك خطأ أن الحقل user_id غير موجود.

ويجب عند إضافة المفتاح الأجنبي أن يكون الحقلين من نفس النوع حيث أن id في جدول users عبارة عن unsignedBigInteger لذلك يجب أن يكون أيضاً الحقل user_id نوعه unsignedBigInteger

$table->unsignedBigInteger('user_id');

$table->foreign('user_id')->references('id')->on('users');

نُعرف الحقل ثم نٌعينه كمفتاح ثانوي.

في النُسخ الحديثة بالإمكان إختصار السطرين أعلاه إلى سطر واحد:

$table->foreignId('user_id')->constrained();

أو:

$table->foreignId('user_id')->constrained('users');

بحيث نُمرر إسم الجدول للتابع constrained إذا لم نتبع الأعراف في التسميات.

بالإمكان إستخدام التوابع cascadeOnUpdate أو cascadeOnDelete و غيرها:

$table->foreignId('user_id')
  ->constrained()
  ->cascadeOnDelete();
  • 0
نشر
Schema::create('categories', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->foreignId('blogs_id')->constrained('blogs');

            $table->timestamps();
        });

  Schema::create('blogs', function (Blueprint $table) {
            $table->increments('id');
            $table->string("title");
            $table->text('body');
            
            $table->foreignId('user_id')->constrained();

            $table->timestamps();
        });
    }

يطلع لي خطا برمجي عيا يهجر الجدول

  • 0
نشر
بتاريخ 7 ساعات قال hanan fahad11:

Schema::create('categories', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->foreignId('blogs_id')->constrained('blogs');

            $table->timestamps();
        });

  Schema::create('blogs', function (Blueprint $table) {
            $table->increments('id');
            $table->string("title");
            $table->text('body');
            
            $table->foreignId('user_id')->constrained();

            $table->timestamps();
        });
    }

يطلع لي خطا برمجي عيا يهجر الجدول

هل يمكنك إرفاق الخطأ الذي يظهر كي نتمكن من مساعدتك

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...