Bonjour à tous, Dans les dernières releases de la branche 1.2.x.x, la méthode Model::saveAll() semble avoir été complétée et optimisée, mais j'ai vraiment du mal à comprendre son fonctionnement en détails...
Apparemment, elle permet de sauvegarder plusieurs enregistrements d'un même modèle ou bien de sauvegarder un enregistrement avec tous ses modèles associés. Mais à l'usage il semble que la seconde possibilité ne réalise pas tout à fait ce qu'on en attend... Or, le code source et les commentaires PHPDoc ne sont pas très clairs, sans doute à cause de mon piètre niveau d'anglo-américain, mais aussi parce que les descriptions de paramètres sont très sommaires. A priori, elle devrait faire un save() de tous les modèles qui apparaissent dans "$this->data", non ? Mon problème : dans un formulaire, j'ai des champs de mon modèle principal Item (par exemple data['Item']['titre'] ou data['Item'] ['date']), des champs correspondant à une HABTM sur ce modèle principal (par exemple, une liste de tags : data[Tag][Tag][]) et des champs correspondant à un autre modèle lié par un hasOne à mon modèle principal (par exemple "Item" hasOne "Article" : data[Article] [auteur_id]). Donc si je fais : $this->Item->save($this->data), les champs de mon modèle principal sont sauvés, ainsi que les HABTM, mais pas les champs du modèle associé par hasOne. Si je fais $this->Item->saveAll($this->data), seuls les champs de mon modèle principal sont sauvés, pas les HABTM, ni les hasOne... Sachant que je fais ses sauvegardes sur des Items existants et non à la création, sachant aussi que je ne connais pas à l'avance quel modèle en hasOne sera utilisé dans le formulaire, je ne peux pas effectuer la méthode indiquée dans le CookBook ou l'on set l'id après la sauvegarde pour le passer au second save... Si parmi vous il y en a qui ont bien cerné le fonctionnement de cette méthode ou qui en ont une autre pour obtenir le même résultat, je suis preneur ! Par avance merci, Aurélien --~--~---------~--~----~------------~-------~--~----~ Groupe "Cakephp-fr". Adresse : [email protected] Pour résilier : [EMAIL PROTECTED] Pour les options : http://groups.google.com/group/cakephp-fr?hl=fr -~----------~----~----~----~------~----~------~--~---
