タグをスペースで区切った文字列を解析、永続化、取得する方法は?

StackOverflow https://stackoverflow.com/questions/245654

  •  05-07-2019
  •  | 
  •  

質問

私のデータベースは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は、デフォルトのスキャフォールディングでコードをほとんどまたはまったく使用せず、実際のコーディングは不要で、これを処理します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top