Wie zu analysieren, bestehen bleiben und eine Zeichenfolge mit Tags durch Leerzeichen getrennt abrufen?
Frage
Meine Datenbank besteht aus drei Tabellen (eine für alle Elemente zu speichern, eine für die Tags, und eine für die Beziehung zwischen den beiden):
Tabelle Post Spalten: PostID, Name Beschr
Tabelle: Tag Spalten: TagID, Name
Tabelle: PostTag Spalten: PostID, TagID
Was ist der beste Weg, um einen Raum getrennten Zeichenfolge (beispielsweise „intelligenten lustigen wunderbar“) in die 3-Datenbank-Tabellen oben gezeigt zu speichern?
Letztendlich würde ich muss auch die Tags abrufen und wieder als String angezeigt werden soll. Dank!
Lösung
Grob gesagt, so etwas wie folgt aus:
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()
}
}
}
Andere Tipps
Wenn Sie einen Tag Tabelle haben, würden Sie nicht haben eine Zeile für jeden Tag?
tag.id = 1; tag.name = 'smart'
tag.id = 2; tag.name = 'funny'
tag.id = 3; tag.name = 'wonderful'
In Groovy / Grails, können Sie sie als eine Liste abrufen würde, möglicherweise sie in eine durch Leerzeichen getrennte Liste für die Anzeige verketten.
Es sei denn, ich bin wirklich die Frage Missverständnis, Groovy / Grails / GORM wird damit umgehen mit wenig oder gar keinem Code mit den Standard-Gerüsten, ohne wirkliche Codierung erforderlich.