2010-10-23 12 views
3

J'ai deux modèles, Posts et Tags. Messages HasAndBelongsToMany Tags. Supposons qu'un poste 1 possède les balises world, news et paper. Maintenant, dans la table de jointure, je souhaite supprimer l'association entre l'étiquette «papier» et l'article 1, mais le «papier» d'étiquette ne doit pas être supprimé du tableau des étiquettes. Seule l'association dans la table de jointure doit être supprimée.Suppression de l'enregistrement d'association HABTM

Comment faire ceci dans CakePHP?

+0

Je pense que ce que vous dites que vous voulez supprimer une balise d'un poste, mais la laisser sur d'autres? – Leo

+0

@Leo ur Droite: D –

Répondre

4

Lorsque vous effectuez une opération HABTM autre que l'ajout d'un nouveau, Cake supprime et recrée les lignes de table de jointure associées. Tout ce que vous avez à faire est d'obtenir l'enregistrement, retirer l'étiquette et sauvegarder à nouveau l'enregistrement.

Dans la vue, j'écris les étiquettes dans un champ de saisie de formulaire. Lorsque l'enregistrement est sauvegardé, je traite la valeur de ce champ pour extraire les étiquettes (éclater par virgule ou espace ou autre) puis enregistrer les étiquettes.

Il y a un bon guide ici: http://mrphp.com.au/code/working-habtm-form-data-cakephp