2010-06-03 5 views
2

J'ai un problème en essayant d'enregistrer (mettre à jour) certaines données associées. J'ai lu environ un million de retours google, mais rien ne semble être la solution. Je suis à la fin de mon esprit et j'espère qu'une âme aimable ici peut aider.saveall ne sauvegarde pas les données associées

J'utilise 1.3.0-RC4, ma base de données est dans InnoDB.

Cours a beaucoup course_tees
CourseTee appartient bien sûr

Ma fonction de contrôleur est assez simple (je l'ai fait aussi simple que possible):

if(!empty($this->data)) 
$this->Course->saveAll($this->data); 

J'ai essayé beaucoup de différentes variations de ce $ this-> data ['Course'], save ($ this-> data), etc sans chance.

Il enregistre les informations de cours, mais pas les données CourseTee. Je ne reçois pas de message d'erreur. Puisque je ne connais pas le nombre de tees d'un cours donné, je génère les entrées de forme dynamiquement dans une boucle.

$form->input('CourseTee.'.$i.'.teeName', array(
    'error' => false, 
    'label' => false, 
    'value'=>$data['course_tees'][$i]['teeName'] 
)) 

Les entrées de cours sont plus simples:

$form->input('Course.hcp'.$j, array(
    'error' => false, 
    'label' => false, 
    'class' => 'form_small_w', 
    'value'=>$data['Course']['hcp'.$j] 
)) 

Et voilà comment mes données sont formatées:

Array 
(
    [Course] => Array 
    (
    [id] => 1028476 
    ... 
) 

    [CourseTee] => Array 
    (
    [0] => Array 
    (
    [key] => 636 
    [courseid] => 1028476 
    ... 
) 

    [1] => Array 
    (
    [key] => 637 
    [courseid] => 1028476 
    ... 
) 

    ... 

) 
) 

Répondre

2

Selon les conventions CakePHP vous devez fournir [course_id] => 1028476 et non [courseid] => 1028476. Vérifiez également les liaisons de modèle (majuscules et traits de soulignement). Il doit y avoir "Cours a beaucoup CourseTee". Do this way sauver:

if ($this->Course->saveAll($this->data, array('validate' => 'first'))) { 
    $this->_flash(__('Successfully saved.', true), 'success'); 
} else { 
    $this->_flash(__('Cannot save. Does not validates.', true), 'error'); 
} 
+1

Tout d'abord, merci pour le formatage deceze mon post correctement. Je vais essayer de m'en souvenir la prochaine fois. Bancer, c'est génial. Ça marche. J'avais changé mes fixations de modèle à ce que vous avez suggéré, mais comme c'était également faux dans mes vues, mes tees ne montraient pas et j'ai supposé que c'était incorrect. Je ne sais pas pourquoi je ne l'ai pas vu puisque tous les autres modèles étaient différents. Merci encore pour votre temps. – junior29101

Questions connexes