タグをスペースで区切った文字列を解析、永続化、取得する方法は?
質問
私のデータベースは3つのテーブルで構成されています(1つはすべてのアイテムを格納するため、1つはタグ用、もう1つは2つの間の関係用):
表:投稿 列:PostID、Name、Desc
表:タグ 列:TagID、Name
表:PostTag 列:PostID、TagID
上記の3つのデータベーステーブルにスペースで区切られた文字列(たとえば、「smart funny wonderful」)を保存する最良の方法は何ですか?
最終的には、タグを取得し、再び文字列として表示する必要もあります。ありがとう!
解決
大まかに言うと、次のようなものです:
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は、デフォルトのスキャフォールディングでコードをほとんどまたはまったく使用せず、実際のコーディングは不要で、これを処理します。
所属していません StackOverflow