2008-10-29 3 views
3

Моя база данных состоит из 3 таблиц (один для хранения всех элементов, один для тегов, и один для связи между ними):Как анализировать, сохранять и извлекать строку с тегами, разделенными пробелами?

Таблица: Сообщение Колонки: сообщения дан, имя, DESC

Таблица : Метка Колонки: TagID, имя

Таблица: PostTag Колонки: сообщения дан, TagID

Что является лучшим способом сохранить пространство, отделенное строку (например, «умный смешной замечательный») в 3-х таблиц базы данных, показанных выше?

В конечном итоге мне также понадобится получить теги и снова отобразить их как строку. Благодаря!

+0

Вы можете уточнить немного больше? Вы можете хранить строки с пробелами в любом столбце String. У вас возникают проблемы с анализом данных и вводом данных? – 2008-10-29 03:12:39

+0

Hi melling. Я могу выделить строку в отдельные слова, но я не о том, как лучше всего исходить оттуда. – 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

Я согласен, вы правы для получения и отображения тегов. Я думаю, он застрял в том, как взять 3 слова из 1 поля формы и вставить 3 записи в таблицу тегов. – 2008-10-29 14:48:58

Смежные вопросы