Как проанализировать, сохранить и получить строку с тегами, разделенными пробелами?
Вопрос
Моя база данных состоит из 3 таблиц (одна для хранения всех элементов, одна для тегов и одна для связи между ними):
Таблица: сообщение Столбцы: PostID, Name, Desc
Таблица: тег Столбцы: TagID, Name
Таблица: PostTag Столбцы: PostID, TagID
Каков наилучший способ сохранить разделенную пробелами строку (например, «умный смешной чудесный») в 3 таблицах базы данных, показанных выше? Р>
В конечном счете мне также нужно будет извлечь теги и снова отобразить их в виде строки. Спасибо!
Решение
Примерно как то так:
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()
}
}
}
Другие советы
Если у вас есть таблица тегов, не будет ли у вас строка для каждого тега?
tag.id = 1; tag.name = 'smart'
tag.id = 2; tag.name = 'funny'
tag.id = 3; tag.name = 'wonderful'
В Groovy / Grails вы можете получить их в виде списка, возможно, объединяя их в список, разделенный пробелами, для отображения.
Если я действительно неправильно понимаю вопрос, Groovy / Grails / GORM справится с этим с небольшим количеством кода или без кода со стандартным каркасом, никакого реального кодирования не требуется.