редактировать несколько моделей торт php - PullRequest
2 голосов
/ 10 мая 2011

пытается редактировать несколько моделей

Контроллер

function edit($id = null) { 

    if (!empty($this->data)) {
    $this->Qnote->save($this->data);
        if ($this->Qnote->save($this->data)) {          
            $this->data['Step']['qnote_id'] = $this->Qnote->id;
            $this->Step->save($this->data);
            $this->Session->setFlash(__('The qnote has been saved', true));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The qnote could not be saved. Please, try again.', true));
        }
    }

Форма

<?php echo $this->Form->create();?>
<fieldset>
    <legend><?php __('Edit Qnote'); ?></legend>
<?php
    echo $this->Form->hidden('Qnote.id');       
    echo $this->Form->input('Qnote.subject');
    echo $this->Form->input('Qnote.body');      
    echo $this->Form->hidden('Step.0.id');
    echo $this->Form->Hidden('Step.qnote_id');

    echo $this->Form->Hidden('Step.user_id');
    echo $this->Form->input('Step.0.body');

?>

<?php echo $this->Form->end(__('Submit', true));?>

Я пытаюсь редактировать и обновлять информацию в связанных моделях, Qnotes иШаг Информация отображается в форме.Однако, когда я отправляю форму.

информация Qnote сохраняется без каких-либо проблем.однако информация о шагах не обновляется

Модели связаны.с шагами принадлежащими Qnote, QNote имеет много шагов

Ответы [ 4 ]

1 голос
/ 03 октября 2014

Попробуйте загрузить другую модель. :) var $ использует = массив ('Qnote', 'Step', 'modelName');

1 голос
/ 10 мая 2011

Ваша форма включает в себя '0' для всех входов Step.

    echo $this->Form->hidden('Qnote.id');       
    echo $this->Form->input('Qnote.subject');
    echo $this->Form->input('Qnote.body');      
    echo $this->Form->hidden('Step.0.id');
    echo $this->Form->Hidden('Step.0.qnote_id');
    echo $this->Form->Hidden('Step.0.user_id');
    echo $this->Form->input('Step.0.body');

А в действии вашего контроллера вам нужно вместо этого вызвать saveAll ().

    if ($this->Qnote->saveAll($this->data)) { 
         ...
0 голосов
/ 04 мая 2017

Если модели связаны, вы можете сохранить все целиком (во всех соответствующих моделях), просто используя функцию saveAll ().

0 голосов
/ 02 октября 2014

Если вы хотите сохранить данные в многократной модели, вы должны вызвать модель в контроллере. Использование

$this->loadModel('Step');

, затем выполните сохранение, как показано ниже. Вы дважды вызвали функцию сохранения для объекта.

function edit($id = null) { 

  if (!empty($this->data)) {
    $save = $this->Qnote->save($this->data);
      if ($save) {          
        $this->data['Step']['qnote_id'] = $this->Qnote->id;
        $this->Step->save($this->data);
        $this->Session->setFlash(__('The qnote has been saved', true));
        $this->redirect(array('action' => 'index'));
    } else {
        $this->Session->setFlash(__('The qnote could not be saved. Please, try again.', true));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...