我有两个表格,表格和属性。我想从Forms表中检索最后一个插入的id,并将其插入Attributes表的form_id列以及其他字段列。
之前我从Forms表中检索了表单ID,并用它来更新Form name列的值。它工作得很好。代码如下:
function saveFormName($data)
{
$this->data['Form']['formname']=$data['Form']['formname'];
$this->data['Form']['id']=$this->find('all', array(
'fields' => array('Form.id'),
'order' => 'Form.id DESC'
));
$this->id=$this->data['Form']['id'][0];
$this->saveField('name',$this->data['Form']['formname']);
}
但是当我尝试以类似的方式更新属性表时,该行不会保存在数据库中,因为$ this-> data ['Form'] ['id']的值[ 0]是'数组'。 即使在saveFormName函数中,$ this-> data ['Form'] ['id'] [0]的值也是'Array',但表单名称会正确更新。有人向我解释了这个概念。
function saveFieldEntries($data)
{
$this->data['Form']['id']=$this->find('all', array(
'fields' => array('Form.id'),
'order' => 'Form.id DESC'
));
$this->data['Attribute']['form_id'] = $this->data['Form']['id'][0];
$this->data['Attribute']['label']= 'Label';
$this->data['Attribute']['size']='20';
$this->data['Attribute']['type']=$data['Attribute']['type'];
$this->data['Attribute']['sequence_no'] = $data['Attribute']['sequence_no'];
$this->Attribute->save($this->data);
}
修改
好的,这是控制器中的相应代码。
function insertFormName()
{
$this->data['Form']['formname']=$this->params['form']['formname'];
$this->Form->saveFormName($this->data);
}
function insertFieldEntry()
{
$this->data['Attribute']['type']=$this->params['form']['type'];
$this->data['Attribute']['sequence_no'] = $this->params['form']['sequence_no'];
$this->Form->saveFieldEntries($this->data);
}
参数形式名称,类型和序列号从相应的视图文件传递给控制器。
答案 0 :(得分:1)
$ this-> data ['Form'] ['id'] [0]包含一个数组,因为find('all')返回一个数组。
因此,如果您需要此数组中的第一个ID,则需要在函数saveFieldEntries中正确选择它:
...
$this->data['Attribute']['form_id'] = $this->data['Form']['id'][0]['Form']['id'];
...