尝试编辑多个模型
控制器
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有很多步骤
答案 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()函数立即保存整个事物(在所有相关模型中)。