编辑多个模型蛋糕PHP

时间:2011-05-09 20:44:59

标签: cakephp

尝试编辑多个模型

控制器

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和Step中的信息 信息显示在表单中。但是当我提交表格时。

Qnote信息可以解决任何问题。但是步骤信息没有更新

模型是相关的。步骤属于Qnote,QNote有很多步骤

4 个答案:

答案 0 :(得分:1)

您的表单包含所有步骤输入的“0”。

    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)) { 
         ...

答案 1 :(得分:1)

尝试此操作以加载不同的模型。 :) var $ uses = array('Qnote','Step','modelName');

答案 2 :(得分:0)

如果要在多个模型中保存数据,则必须在控制器中调用模型。使用

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

答案 3 :(得分:0)

如果模型是关联的,您可以使用saveAll()函数立即保存整个事物(在所有相关模型中)。