Kek PHP avtomatik shakllari va bir nechta jadvallar

Menda quyidagi maydonlarga ega shakl bor:

  • ism
  • familiya
  • E-pochta manzili

keyin (ko'pi bilan) o'nta nom/elektron pochta maydonlari, shunga o'xshash

  • do'stning ismi-1
  • do'st elektron pochtasi-1
  • do'stning ismi-2
  • friendEmail-2 ... va boshqalar.

FirstName, Familiya va emailManzil maydonlari "yo'naltirishlar" jadvalida saqlanadi, lekin 10 ta ism/elektron pochta juftligi refferal_id xorijiy kalitini o'z ichiga olgan "do'stlar" jadvaliga kiradi.

Odatda men cakephp 'automagic' shakllaridan foydalanaman va modelda tekshirishni o'rnataman va $this->model->save(); bajaraman, agar u muvaffaqiyatsiz bo'lsa, men modelni tekshirish qoidalariga qaytaman va xato xabarlari html formamga qaytadi. Muammosiz.

Buni IKKI jadval uchun qanday qila olaman? Men o'ylaymanki, avtomagik narsalar borishning yo'li emas, lekin men usiz ko'p narsalarni yo'qotaman deb o'ylayman, masalan, modellarimdagi tekshiruvlar va shaxsiy xato xabarlari.

Baxtli vosita bormi? Men pirojnoe uchun juda yangiman, shuning uchun bir nechta jadvallar bilan automagicdan foydalanishning bir usuli bormi, deb o'ylayman.


person Chris J Allen    schedule 13.07.2009    source manba


Javoblar (2)


Qarang: http://book.cakephp.org/view/84/Saving-Related-Model-Data-hasOne-hasMany-belongsTo

Yo'naltiruvchi modelingizda munosabatlarni yarating:

var $hasMany = array('Friend');

Asosan, maydonlaringizni to'g'ri nomlaganingizga ishonch hosil qiling, masalan.

echo $form->create('Referral');
echo $form->input('first_name');
echo $form->input('last_name');
echo $form->input('email');
foreach (range(0,9) as $index) {
  echo $form->input('Friend.'.$index.'.name');
  echo $form->input('Friend.'.$index.'.email');
}
echo $form->end();

Va tavsiyalar boshqaruvchisida:

function add() {
   if(!empty($this->data)) {
      $this->Referral->saveAll($this->data, array('validate'=>'first'));
   }
}
person neilcrookes    schedule 13.07.2009

Birinchidan, umid qilamanki, sizda 'friendName-1', 'friendEmail-1' va hokazo deb nomlangan jadvalda 20 ta maydon yo'q. Ikkinchi jadvalingizda 3 ta maydon bo'lishi kerak - referal_id, do'st nomi va do'st elektron pochtasi. Agar siz normallashtirishni xohlamasangiz, ikkinchi jadval kerak emas.

Lekin men chetlab o'tmoqchiman, avtomatik sehrli shakllaringizni saqlashning yo'li "hasMany" ni qo'yishdir. tavsiyalar modelingizda va/yoki "do'stlar" modelingizdagi "belongsTo". Keyin siz hali ham FormHelper va Model-> Save() dan foydalanishingiz mumkin.

person Matthew Groves    schedule 13.07.2009
comment
:) yo'q men o'zimni yetarlicha tushunmadim. Dahshatli qattiq kodlangan -1,-2 narsalar faqat html formasi uchun. Men ularni shunchaki aylanib chiqaman va ularni do'stlarim jadvalida alohida qatorlar sifatida saqlayman. - person Chris J Allen; 13.07.2009
comment
Keyin menimcha, siz hasMany/belongsTo dan foydalansangiz, automagic imkoniyatiga ega bo'lishingiz kerak. - person Matthew Groves; 13.07.2009