2008-10-29 95 views
3

我的數據庫由3個表(一個用於存儲所有項目,一個標籤,一個是兩者之間的關係)的:如何解析,保留和檢索標籤以空格分隔的字符串?

表:郵政 列:帖子ID,名稱,說明

表:標籤 列:標籤識別,名稱

表:PostTag 列:帖子ID,標籤識別

什麼是節省空間分隔的字符串(如「聰明滑稽的精彩」)到顯示的3代數據庫表的最佳途徑以上?

最終我還需要檢索標籤並再次將其顯示爲字符串。謝謝!

+0

你能更詳細一點?您可以在任何字符串列中存儲帶空格的字符串。解析數據並插入數據有問題嗎? – 2008-10-29 03:12:39

+0

你好。我可以將字符串標記爲單獨的單詞,但我不是從這裏開始的最佳方式。 – Walter 2008-10-29 03:54:58

回答

4

粗略地說,這樣的事情:

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

如果你有一個標籤表,你不會爲每個標籤有一行嗎?

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

在Groovy/Grails的,你最好檢索它們作爲一個列表,可能它們串聯成顯示空格分隔列表。

除非我真的誤解了這個問題,否則Groovy/Grails/GORM將使用默認腳手架很少或沒有代碼來處理這個問題,不需要真正的編碼。

+0

我同意,你是正確的檢索和顯示標籤。我認爲他被困在如何從1表單字段中取3個單詞並在標記表中插入3條記錄。 – 2008-10-29 14:48:58

相關問題