سؤال

أقوم بإنشاء موقع ويب في CakePHP وأنا جديد عليه نوعًا ما.لم أتمكن من العثور على مصادر جيدة حول هذا الموضوع، لذا إليك ما يلي:

لدي هيكل من ثلاثة جداول لتسجيل المستخدمين: Users, Addresses و Contacts.لا بد لي من إنشاء عرض يحتوي على معلومات حول الجداول الثلاثة مثل:

Full Name:         [          ] (from Users)
Shipping Address:  [          ] (from Address)
Mobile Phone:      [          ] (from Contact)
e-Mail Address:    [          ] (from Contact)

ما هي أفضل طريقة للتعامل مع هذا الوضع. خصيصا للادخار.إنشاء نموذج جديد لتمثيل هذا، سيكون له save() الطريقة نفسها (ربما عرض SQL في قاعدة البيانات) قم بإنشاء وحدة تحكم للتعامل مع هذا العرض bindق أو unbindمعلومات

ما زلت أتساءل كيف سأتعامل مع كلتا جهتي الاتصال لأنهما سيكونان مختلفين INSERT

أي تلميح أو موارد يمكنني البحث عنها سأكون سعيدًا.

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

المحلول

إذا كنت تستخدم أحدث كود 1.2، فاطلع على Model::saveAll في واجهة برمجة التطبيقات

على سبيل المثال.قد تبدو وجهة نظرك كما يلي:

echo $form->create('User', array('action' => 'add');
echo $form->input('User.name');
echo $form->input('Address.line_1');
echo $form->input('Contact.tel');
echo $form->end('Save');

ثم في طريقة إضافة وحدة تحكم المستخدمين الخاصة بك، سيكون لديك شيء مثل:

...

if($this->User->saveAll($this->data)) {
 $this->Session->setFlash('Save Successful');
 $this->redirect(array('action' => 'index'));
} else {
 $this->Session->setFlash('Please review the form for errors');
}

...

في نموذج المستخدم الخاص بك، ستحتاج إلى شيء مثل:

var $hasOne = array('Address', 'Contact');

امل ان يساعد!

http://api.cakephp.org/class_model.html#49f295217028004b5a723caf086a86b1

نصائح أخرى

يسمح لك CakePHP بالحفاظ بسهولة على الارتباط بين النماذج الخاصة بك باستخدام العلاقة، انظر http://book.cakephp.org/view/78/Associations-Linking-Models-Together للحصول على التفاصيل الكاملة.بعد ذلك، عند استرجاع المستخدم الصحيح، ستحصل أيضًا "مجانًا" على عنوانه ومعلومات الاتصال به.

3 نماذج :المستخدم، العنوان، جهة الاتصال

User hasOne Address, Contact
Address belongsTo User
Contact belongsTo User

في النموذج الخاص بك تحدد هذا مثل هذا:

class User extends AppModel {
var $name = 'User';
var $hasOne = array('Address','Contact');
..

لجعل هذا الرأي، تحتاج معرف المستخدم مجال الصناعة عناوين, ، و جهات الاتصال الجداول

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

$this->User->recursive = 1;
$this->set('user', $this->User->find('first', array('conditions'=>array('id'=>666)));

سيؤدي هذا إلى هذه المصفوفة لعرضك:

array(
  'Use' => array(
     'id' => 666,
     'name' => 'Alexander'
),
  'Address' => array(
     'id' => 123,
     'zip' => 555
),
   'Contact' => array(
     'id' => 432,
     'phone' => '555-1515'
));
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top