Представление мультимодели CakePHP

Вы можете использовать цикл for-in, как показано другими. Тем не менее, вы также должны убедиться, что ключ, который вы получаете, является фактическим свойством объекта и не исходит от прототипа.

Вот фрагмент:

var p = {
    "p1": "value1",
    "p2": "value2",
    "p3": "value3"
};

for (var key in p) {
    if (p.hasOwnProperty(key)) {
        console.log(key + " -> " + p[key]);
    }
}

5
задан Chuck Burgess 27 August 2010 в 01:22
поделиться

3 ответа

Если Ваше использование последних 1,2 кодов, проверьте Модель:: saveAll в API

например, Ваше представление могло бы выглядеть примерно так:

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');
}

...

В Вашей модели User Вам будет нужно что-то как:

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

Надежда, которая помогает!

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

10
ответ дан 18 December 2019 в 12:03
поделиться

3 модели: Пользователь, Адрес, Контакт

User hasOne Address, Contact
Address belongsTo User
Contact belongsTo User

в Вашей модели Вы определяете это как это:

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

Для создания этого представления Вам нужно user_id поле ind адреса и таблицы контактов

Для использования этого в представлении Вы просто называете находку на модели User с рекурсивным из одного (и btw, пользовательский контроллер только использует модель User).

$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'
));
1
ответ дан 18 December 2019 в 12:03
поделиться

CakePHP позволяет, Вы к легко поддерживаете ссылку между своими моделями с помощью отношений, см. http://book.cakephp.org/view/78/Associations-Linking-Models-Together для полной детали. Затем получая правильного Пользователя, Вы также доберетесь "бесплатно", его адрес и контактная информация.

4
ответ дан 18 December 2019 в 12:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: