2009-06-12 5 views
0

Ich habe zwei Tabellen, Formulare und Attribute. Ich versuche, die letzte eingefügte ID aus der Forms-Tabelle abzurufen und sie zusammen mit den anderen Feldspalten in die Spalte form_id der Tabelle Attribute einzufügen.Wie bekomme ich die letzte eingefügte 'id' aus der forms-Tabelle und füge sie der 'form_id' in der Attributtabelle hinzu?

Früher abgerufen ich das Formular Id aus der Tabelle und wird dafür verwendet es den Wert des Formularname Spalte zu aktualisieren. Es funktionierte fine.The Code für die unten angegeben:

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']);  
    } 

aber wenn ich es auf eine ähnliche Art und Weise zu tun versucht, für die Attribute Tabelle zu aktualisieren, wird die Zeile nicht in der Datenbank, da der Wert von $ gespeichert this-> data ['Form'] ['id'] [0] ist ein 'Array'. Auch in der saveFormName Funktion, der Wert von $ this-> data [ 'Form'] [ 'id'] [0] ist ein 'Array', aber die Form Name korrekt aktualisiert wird. Jemand erklärt mir das Konzept.

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:

Ok, hier ist der entsprechende Code in der Steuerung.

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); 
    } 

Die Parameter bilden Namen, den Typ und die Sequenz nicht an die Steuerung von der entsprechenden Sichtdatei übergeben werden.

+0

Bitte noch näher erläutern den Prozess hinter diesen beiden Funktionen. Wie kommen die Daten bei jedem an? Gibt es irgendwo ein Formular, das gepostet wird und diese Funktionen anschließend von der zuständigen Controller-Aktion aufgerufen werden? Ich denke, du machst das schwieriger, als es sein muss, aber ich kann nicht wirklich eine Lösung finden, bis ich mehr Code sehe (beide Modelle und Controller wären ideal, wenn du sie schwingen kannst). – inkedmn

Antwort

1

$ this-> data [ 'Form'] [ 'id'] [0] enthält ein Array, da find ('all') ein Array zurückgibt.

Also, wenn Sie zum ersten Mal ID aus diesem Array benötigen, müssen Sie es richtig in Funktion saveFieldEntries holen:

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

Danke. Es funktioniert gut.. – Angeline

Verwandte Themen