Pergunta

O meu banco de dados consiste de 3 tabelas (uma para armazenar todos os itens, um para as tags, e outra para a relação entre as duas):

Table: Post Colunas: postID, Nome, desc

Table: Tag Colunas: TagID, Nome

Table: PostTag Colunas: postID, TagID

Qual é a melhor maneira de salvar um espaço separado string (por exemplo, "inteligente engraçado maravilhoso") nas tabelas de banco de dados 3 mostrada acima?

Em última análise, eu também preciso recuperar as tags e exibi-lo como uma string novamente. Obrigado!

Foi útil?

Solução

A grosso modo, algo como isto:

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

}

Outras dicas

Se você tem uma tabela Tag, que não tem uma linha para cada Tag?

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

Em Groovy / Grails, você recuperá-los como uma lista, possivelmente, concatenando-los em um espaço lista separada para exibição.

A menos que eu estou realmente mal-entendido a pergunta, Groovy / Grails / GORM irá lidar com isso com pouco ou nenhum código com o andaime padrão, há real necessidade de codificação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top