2009-07-30 5 views
3

Je crée plusieurs associations en une fois et il y a quelques problèmes quand il s'agit de sauvegarder.Enregistrement avec HABTM dans CakePHP

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 expérimenté avec le formatage du 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 lorsqu'une nouvelle est insérée, soit la dernière est mise à jour.

Je pourrais juste employer ce qui suit bien que j'ai besoin d'un comportement pour déclencher.

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

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

Répondre

8

L'IRC a aidé à travailler ce qui était faux, une fois la clé unique, a été mis à faux tout a pu enregistrer correctement.

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

+1 vers l'insigne d'auto-apprenant – deizel

1

Essayez de réinitialiser le id avant une nouvelle save(), peut-être sur les deux modèles:

$this->User->id = null; 

gâteau décide de mettre à jour ou insérer des entrées en fonction de l'ensemble id et save() définit un id automatiquement. Je ne sais pas pourquoi create() ne s'occupe pas de cela pour vous. En outre, si vous souhaitez enregistrer des données HABTM, vous devez utiliser saveAll() au lieu de save(). Voir également this question.