我的数据库由 3 个表组成(一个用于存储所有项目,一个用于标签,一个用于两者之间的关系):
表:帖子列:PostID、名称、描述
表:标签列:标签 ID、名称
表:PostTag 列:PostID、TagID
将空格分隔的字符串(例如“smart funny wonderful”)保存到上面显示的 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 将使用默认脚手架处理这个问题,只需很少或没有代码,不需要真正的编码。