У меня есть две таблицы: формы и атрибуты. Я пытаюсь извлечь последний вставленный идентификатор из таблицы Forms и вставить его в столбец form_id таблицы Attributes вместе с другими столбцами полей.
Ранее я извлекал идентификатор формы из таблицы форм и использовал его для обновления значения столбца имени формы. Он работал нормально. Код для этого приведен ниже:
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] является массивом, но имя формы обновляется правильно. Кто-то объяснит мне концепцию.
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);
}
EDIT:
Хорошо, вот соответствующий код в контроллере.
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);
}
Имя формы параметров, тип и последовательность no передаются контроллеру из соответствующего файла представления.