بندر البطاطي نشر 13 ديسمبر 2023 أرسل تقرير نشر 13 ديسمبر 2023 في الصورة المرفقة فهمت ان commentable_id يخزن foreign key لجدول Posts او Videos .. ولكن هل يتم تعيين العمود commentable_id كـ foreign key او فقط يخزن foreign key دون ان يكون هو عبارة عن foreign key ؟ 1 اقتباس
0 Adnane Kadri نشر 13 ديسمبر 2023 أرسل تقرير نشر 13 ديسمبر 2023 علاقة One Two Many Polymorphic تقتضي أن يكون العمود الممثل للمفتاح الاجنبي حاملا لقيمته لا أكثر، ولا يتطلبك تصريحه كمفتاح أجنبي يشير الى مفتاح اولي في جدول آخر. بمعنى أنه سيكون مجرد Ineteger لا أكثر ولا يفترض أن يحمل أن علاقة تعبر عنه كونه مفتاحا أجنبيا، بل سيتم الاستعلام عنه لاحقا باعتبار هاته القيمة وفقط. هيكلة الجداول لديك يجب أن تبدوا على النحو التالي: Schema::create('comments', function (Blueprint $table) { $table->id(); $table->text("comments"); $table->integer('commentable_id'); $table->string("commentable_type"); $table->timestamps(); }); ولا تنسى بطبيعة الحال تصريح التوابع اللازمة في ملفات النماذج المعنية Comment و Video و Post وسيتم الأمر بشكل تلقائي. 1 اقتباس
0 بندر البطاطي نشر 13 ديسمبر 2023 الكاتب أرسل تقرير نشر 13 ديسمبر 2023 بتاريخ 13 دقائق مضت قال Adnane Kadri: علاقة One Two Many Polymorphic تقتضي أن يكون العمود الممثل للمفتاح الاجنبي حاملا لقيمته لا أكثر، ولا يتطلبك تصريحه كمفتاح أجنبي يشير الى مفتاح اولي في جدول آخر. بمعنى أنه سيكون مجرد Ineteger لا أكثر ولا يفترض أن يحمل أن علاقة تعبر عنه كونه مفتاحا أجنبيا، بل سيتم الاستعلام عنه لاحقا باعتبار هاته القيمة وفقط. هيكلة الجداول لديك يجب أن تبدوا على النحو التالي: Schema::create('comments', function (Blueprint $table) { $table->id(); $table->text("comments"); $table->integer('commentable_id'); $table->string("commentable_type"); $table->timestamps(); }); ولا تنسى بطبيعة الحال تصريح التوابع اللازمة في ملفات النماذج المعنية Comment و Video و Post وسيتم الأمر بشكل تلقائي. ولكن في حال تم حذف post او video لن يتم حذف التعليق المتعلق بهم في هذه الحالة .. صحيح ؟ 1 اقتباس
0 Adnane Kadri نشر 13 ديسمبر 2023 أرسل تقرير نشر 13 ديسمبر 2023 بتاريخ الآن قال بندر البطاطي: ولكن في حال تم حذف post او video لن يتم حذف التعليق المتعلق بهم في هذه الحالة .. صحيح ؟ بشكل افتراضي لن يتم ذلك على مستوى قاعدة البيانات، ولكن يمكنك تجاوز التابع delete الخاص بـ post أو video فتقوم بحذف جميع التعليقات الفرعية قبل حذف المنشور أو الفيديو. public function delete() { if(parent::delete())){ $this->comments()->delete(); } } 1 اقتباس
السؤال
بندر البطاطي
في الصورة المرفقة فهمت ان commentable_id يخزن foreign key لجدول Posts او Videos .. ولكن هل يتم تعيين العمود commentable_id كـ foreign key او فقط يخزن foreign key دون ان يكون هو عبارة عن foreign key ؟
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.