Question

Je crée plusieurs associations en une fois et il y a quelques problèmes en matière de sauvegarde.

J'ai le code suivant:

<?php
foreach($userData as $user) {
    $data = array('User' => array('id' => $user['id']), 'Site' => array('id' => $user['site_id']));
    $this->User->save($data);
}
?>

J'ai essayé de formater le tableau de données de différentes manières bien que je rencontre toujours les mêmes problèmes. Soit les entrées précédentes sont déplacées quand une nouvelle est insérée ou les entrées actuelles sont mises à jour.

Je pourrais simplement utiliser ce qui suit bien que j’ai besoin d’un comportement à déclencher.

$this->User->SiteUser->save($data);

Modifier: Également $ this- > User- > create (); ne semble pas faire grand chose.

Était-ce utile?

La solution

L'IRC a aidé à déterminer ce qui n'allait pas, une fois que la clé unique était définie sur false , tout était capable de sauvegarder correctement.

//In the user model
var $hasAndBelongsToMany = array(
  'Site' => array(
    'className' => 'Site',
    'unique' => false
  )
);

Autres conseils

Essayez de réinitialiser id avant un nouveau save () , éventuellement sur les deux modèles:

$this->User->id = null;

Cake décide de mettre à jour ou d'insérer des entrées en fonction de l'ensemble id , et save () définit automatiquement un id . Vous ne savez pas pourquoi create () ne s'en occupe pas pour vous.

De même, si vous souhaitez enregistrer les données HABTM, vous devez utiliser saveAll () au lieu de save () . Voir également cette question .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top