2008-10-29 5 views
3

Ma base de données se compose de 3 tables (un pour stocker tous les éléments, un pour les étiquettes, et une pour la relation entre les deux):Comment analyser, conserver et récupérer une chaîne avec des tags séparés par des espaces?

Tableau: Post Colonnes: PostID, Nom, Desc

Table : Tag Colonnes: TagId, Nom

Tableau: PostTag Colonnes: postID, TagId

Quelle est la meilleure façon d'enregistrer une chaîne séparée de l'espace (par exemple, "intelligent drôle merveilleux") dans les 3 tables de base de données affichés au dessus?

En fin de compte, il faudrait aussi que je récupère les étiquettes et que je les affiche à nouveau sous forme de chaîne. Merci!

+0

Pouvez-vous élaborer un peu plus? Vous pouvez stocker des chaînes avec des espaces dans n'importe quelle colonne String. Avez-vous des problèmes pour analyser les données et insérer les données? –

+0

Salut melling. Je peux scinder la chaîne en mots séparés, mais je ne suis pas sur la meilleure façon de procéder à partir de là. – Walter

Répondre

4

En gros, quelque chose comme ceci:

class Post { 
    static hasMany [tags:Tag] 
} 

class Tag { 
    static belongsTo = Post 
    static hasMany [posts:Post] 
} 

class someService { 

    def createPostWithTags(name, desc, tags) {  
     def post = new Post(name: name, desc: desc).save() 
     tags.split(' ').each { tagName -> 
      def tag = Tag.findByName(tag) ?: new Tag(name: tagName) 
      post.addToTags(tag).save() 
     }  
    } 

} 
+0

Merci Hates_. Cette solution fonctionne bien. Je devais juste faire un petit changement: def tag = Tag.findByName (tag)?: Nouveau Tag (nom: tagName) .save() – Walter

1

Si vous avez une table de variables, n'auriez-vous pas une ligne pour chaque variable?

tag.id = 1; tag.name = 'smart' 
tag.id = 2; tag.name = 'funny' 
tag.id = 3; tag.name = 'wonderful' 

Groovy/Grails, vous devriez les récupérer sous forme de liste, les concaténer éventuellement dans un espace liste séparée pour l'affichage. À moins que je ne comprenne vraiment la question, Groovy/Grails/GORM va gérer cela avec peu ou pas de code avec l'échafaudage par défaut, pas vraiment de codage requis.

+0

Je suis d'accord, vous avez raison de récupérer et d'afficher les balises. Je pense qu'il est coincé sur la façon de prendre 3 mots de 1 champ de formulaire et d'insérer 3 enregistrements dans la table des étiquettes. –

+0

Oui, je pense que c'est ce que je voulais savoir. Mais je n'étais pas capable d'articuler le problème au départ. Je vais éditer la question originale maintenant. – Walter

+0

On dirait que 'Hates_' a une réponse –

Questions connexes