سؤال

أنا بناء تطبيق مع CakePhp وأنا جديد جدا فيه.ما أريد القيام به الآن هو هذا.اسمحوا لي أن أشرح في عدد قليل من الكلمات: لدي 2 نماذج، عنصر ونماذج.عنصر واحد يمكن أن يكون له العديد من النماذج.لذلك يحتوي جدول البيانات على مفتاح أجنبي - item_id - الذي يشير إلى البند.الآن أريد منع المستخدم من حذف العناصر إذا كان لا يزال هناك مطبوعات تشير إلى هذا العنصر.

نموذج العنصر الخاص بي هو:

giveacodicetagpre.

ونموذج التصنيف هو:

giveacodicetagpre.

الآن ما رأيته وكتب كان هذا، وإذا كان أي شخص لديه أي فكرة سأقدر ذلك حقا:

giveacodicetagpre.

وعند محاولة حذف عنصر له مطبق أو عنصر لا يعرض هذا الخطأ!

giveacodicetagpre.

كيف يمكنني حلها !!

هل كانت مفيدة؟

المحلول

المنطق يشبه ما theotherdy أوضح بالفعل.

في رمز تحكم الخاص بك طريقة حذف () كما يلي:

giveacodicetagpre.

نصائح أخرى

كنت قد قلت أنك تريد أن تمنع DB الخاص بك حذف العناصر التي يشار إليها من قبل شركات أخرى من خلال التأكد من أن هذه القيود الرئيسية الأجنبية موجودة في DB. ثم يجب ألا تمنح واجهة المستخدم الناس خيار حذف العناصر التي تتم الإشارة إليها عن طريق التصنيف، ولكن ربما ترغب في منحهم خيار إزالة النطبيات من عنصر.

ليس لدي أي فكرة عن أي نوع من المستخدم الذي تقترحه ولكن (خارج الجزء العلوي من رأسي، رمز غير محدد لذلك الاعتذار عن أي الأخطاء المطبعية / الأخطاء)، قل أنه كان لديك فهرس / عرض عناصر، قد يكون لديك هذا في InditureController.PHP Action:

giveacodicetagpre.

ثم في وجهات النظر / العناصر / index.ctp قد يكون لديك:

giveacodicetagpre.

hth

إضافة المزيد من التفاصيل في وحدة التحكم - التوسع في إجابة Savedario

إذا تم إعداد النماذج الخاصة بك مع قيود المفاتيح الأجنبية المناسبة ثم

giveacodicetagpre. سوف تفشل

إذا كانت هناك أي انتهاكات لتلك القيود، حيث يقول @ Savedario، يمكنك اختبار النجاح مع

giveacodicetagpre.

أو يمكنك الذهاب خطوة واحدة، كما يوضح @ Avedario ولكن ما أعتقد أنه يتم إنجازه بشكل أكثر أناقة ومهنة هنا: http://joshuapaling.com/post/catching-ingrity-constraint-violations-when-deleting-records ورمي استثناء إذا كانت هناك سجلات مرتبطة يمكن بعد ذلك اختبار في ما يلي (نسخ من مدونة Joshuapaling):

giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top