2009-07-10 3 views
2

Grundsätzlich möchte ich dasselbe erreichen wie ON DUPLICATE KEY in MySQL.Wird die Speichermethode in einer CakePHP-Modellklasse zwischen dem Erstellen und Aktualisieren eines Datensatzes ausgewählt?

Hier ist ein konstruiertes Beispiel:

 
$rec = array('Foo' => array(
    'id' => 999, // Assume there isn't already a record with this id 
    'website' => 'google' 
)); 
$this->Foo->save($rec); 

// save with different 'website' value 
$rec['Foo']['website'] = 'stackoverflow'; 
$this->Foo->save($rec); 

Ist die letzte Zeile des Datensatzes aktualisieren, die auf nur ein paar Zeilen erstellt wurde?

Antwort

10

Wenn Sie save() aufrufen, einen Datensatz mit einem vorhandenen id (oder was auch immer der Primärschlüssel ist) liefern, wird es aktualisiert, andernfalls wird es einen neuen Datensatz erstellen.

Also in Ihrem Fall, ja, es würde den Datensatz aktualisieren, der zuerst an der Spitze erstellt wurde.

aktualisieren

Hier the supporting documentation:

Erstellen oder Aktualisieren von ID-Feld des Modells gesteuert wird. Wenn $ Model-> id gesetzt ist, wird der Datensatz mit diesem Primärschlüssel aktualisiert. Andernfalls wird ein neuer Datensatz erstellt.

Unter der Dokumentation für Model::save().

+0

Danke, Peter. Du bist ein Mann. – allyourcode

Verwandte Themen