如何从表单表中获取最后插入的“id”并将其添加到属性表中的“form_id”?

时间:2009-06-12 07:00:07

标签: cakephp model

我有两个表格,表格和属性。我想从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);
    }

参数形式名称,类型和序列号从相应的视图文件传递给控制器​​。

1 个答案:

答案 0 :(得分:1)

$ this-> data ['Form'] ['id'] [0]包含一个数组,因为find('all')返回一个数组。

因此,如果您需要此数组中的第一个ID,则需要在函数saveFieldEntries中正确选择它:

...
$this->data['Attribute']['form_id'] = $this->data['Form']['id'][0]['Form']['id'];
...