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
-~----------~----~----~----~------~----~------~--~---

Répondre à