Mon objet hôte contient plusieurs objets d'option associés. Dans le formulaire d'édition, les utilisateurs peuvent (de) sélectionner des options et enregistrer ce nouvel ensemble d'associations. Ceci est implémenté en utilisant saveAll() sur les données publiées. Le résultat est queExiste-t-il un moyen de faire en sorte que saveAll() supprime les objets superflus?
- l'hôte (principal) objet est mis à jour, l'option
- (associé) les objets qui sont inclus à la fois dans la précédente et la nouvelle association sont mis à jour, et
- objets d'options qui ne sont pas inclus dans l'association précédente, mais sont inclus dans le nouveau sont créés.
Mais ce qui ne se produit pas est
- que les objets d'options qui ont été inclus dans l'association avant, mais pas dans le nouveau sont supprimés.
Question: Can saveAll() faire aussi bien, et comment la structure de données aurait Ressembler pour obtenir cet effet?
Informations connexes:
Mon code pour gérer le formulaire de modification est en fait plus complexe (et donc je ne l'ai pas cité ici), mais il en résulte la structure de données comme décrit dans le livre:
([Host] => (... host object fields ...),
[Option] => ([0] => (... first option object fields ...),
...
[n] => (... nth option object fields ...)
)
)
Maintenant, si l'hôte d'origine avait une option associée qui n'est pas incluse dans le tableau 0..n alors saveAll() ne le détectera pas et ne supprimera pas cet objet associé.
Je ne sais pas si cela est pertinent, mais j'utilise CakePHP 1.3.
Merci pour la clarification. Je vais supprimer les enregistrements supplémentaires manuellement et probablement ajouter manuellement aussi, en éliminant la configuration de saveAll() alltogether (la source de données ne supporte pas les changements atomiques, de sorte que le point en faveur de saveAll() est discutable). –
J'utilise rarement saveAll - Je préfère garder le contrôle. – Leo