Как проанализировать, сохранить и получить строку с тегами, разделенными пробелами? - PullRequest
3 голосов
/ 29 октября 2008

Моя база данных состоит из 3 таблиц (одна для хранения всех элементов, одна для тегов и одна для связи между ними):

Таблица: сообщение Столбцы: PostID, Имя, Desc

Таблица: тег Столбцы: TagID, Имя

Таблица: PostTag Столбцы: PostID, TagID

Каков наилучший способ сохранить разделенную пробелами строку (например, «smart funny amazing») в 3 таблицах базы данных, показанных выше?

В конечном счете мне также нужно будет извлечь теги и снова отобразить их в виде строки. Спасибо!

Ответы [ 2 ]

4 голосов
/ 30 октября 2008

Примерно как то так:

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

}
1 голос
/ 29 октября 2008

Если у вас есть таблица тегов, не будет ли у вас строка для каждого тега?

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

В Groovy / Grails вы извлекаете их в виде списка, возможно объединяя их в список, разделенный пробелами, для отображения.

Если я действительно не понимаю вопроса, Groovy / Grails / GORM справится с этим с небольшим количеством кода или без кода со стандартными скаффолдингами, реального кода не требуется.

...