공간으로 구분 된 태그가있는 문자열을 구문 분석하고 지속하고 검색하는 방법은 무엇입니까?

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

  •  05-07-2019
  •  | 
  •  

문제

내 데이터베이스는 3 개의 테이블로 구성됩니다 (하나는 모든 항목을 저장하고 하나는 태그에, 하나는 둘 사이의 관계)로 구성됩니다.

표 : 포스트 열 : PostID, 이름, desc

표 : 태그 열 : Tagid, 이름

표 : 사후 열 : 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