Domanda

Il mio database è composto da 3 tabelle (una per la memorizzazione di tutti gli elementi, una per i tag e una per la relazione tra i due):

Tabella: Posta Colonne: PostID, Nome, Desc

Tabella: tag Colonne: TagID, Nome

Tabella: PostTag Colonne: PostID, TagID

Qual è il modo migliore per salvare una stringa separata da spazio (ad es. "intelligente divertente meraviglioso") nelle 3 tabelle di database mostrate sopra?

Alla fine dovrei anche recuperare i tag e visualizzarli di nuovo come una stringa. Grazie!

È stato utile?

Soluzione

All'incirca, qualcosa del genere:

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

}

Altri suggerimenti

Se hai una tabella di tag, non avresti una riga per ogni tag?

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

In Groovy / Grails, li avresti recuperati come un elenco, possibilmente concatenandoli in un elenco separato da spazi per la visualizzazione.

A meno che io non abbia veramente frainteso la domanda, Groovy / Grails / GORM gestirà questo problema con poco o nessun codice con l'impalcatura di default, nessuna vera codifica richiesta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top