2009-07-10 2 views
2

Fondamentalement, je veux atteindre la même chose que ON DUPLICATE KEY dans MySQL.La méthode save d'une classe de modèle Cakephp va-t-elle choisir entre la création et la mise à jour d'un enregistrement?

Voici un exemple artificiel:

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

Est-ce que la dernière ligne à jour le dossier qui a été créé quelques lignes en place?

Répondre

10

Si vous appelez save(), en fournissant un enregistrement avec un id existant (ou quelle que soit la clé primaire), il sera mis à jour, sinon il créera un nouvel enregistrement.

Donc dans votre cas, oui, cela mettrait à jour l'enregistrement créé en premier.

Mise à jour

est ici the supporting documentation:

Création ou mise à jour est contrôlée par champ id du modèle. Si $ Model-> id est défini sur , l'enregistrement avec cette clé primaire est mis à jour. Autrement, un nouvel enregistrement est créé .

Sous la documentation de Model::save().

+0

Merci, Peter. Tu es un homme. – allyourcode

Questions connexes