Comment analyser, persister et récupérer une chaîne avec des balises séparées par des espaces?

StackOverflow https://stackoverflow.com/questions/245654

  •  05-07-2019
  •  | 
  •  

Question

Ma base de données comprend 3 tables (une pour stocker tous les éléments, une pour les balises et une pour la relation entre les deux):

Tableau: Poste Colonnes: PostID, Name, Desc

Table: balise Colonnes: TagID, Nom

Tableau: PostTag Colonnes: PostID, TagID

Quel est le meilleur moyen de sauvegarder une chaîne séparée par des espaces (par exemple, "smart funny wonderful") dans les 3 tables de base de données ci-dessus?

En fin de compte, j’aurais également besoin de récupérer les balises et de les afficher à nouveau sous forme de chaîne. Merci!

Était-ce utile?

La solution

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()
        }       
    }

}

Autres conseils

Si vous avez une table d'étiquettes, n'auriez-vous pas une ligne pour chaque étiquette?

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

Dans Groovy / Grails, vous les récupériez sous forme de liste, en les concaténant éventuellement dans une liste séparée par des espaces pour l'affichage.

À moins que je ne comprenne vraiment pas bien la question, Groovy / Grails / GORM s’occupera de cela avec peu ou pas de code avec l’échafaudage par défaut, aucun vrai code n’est requis.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top