Как мне получить последний вставленный «id» из таблицы форм и добавить его к «form_id» в таблице атрибутов? - PullRequest
0 голосов
/ 12 июня 2009

У меня есть две таблицы: формы и атрибуты. Я пытаюсь извлечь последний вставленный идентификатор из таблицы 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 передаются контроллеру из соответствующего файла представления.

1 Ответ

1 голос
/ 12 июня 2009

$ this-> data ['Form'] ['id'] [0] содержит массив, потому что find ('all') возвращает массив.

Поэтому, если вам нужен первый идентификатор из этого массива, вам нужно правильно выбрать его в функции saveFieldEntries:

...
$this->data['Attribute']['form_id'] = $this->data['Form']['id'][0]['Form']['id'];
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...