一對多來說,一個作者可以發表多篇文章。
那這個關聯我們要從哪邊開始加?我們可以先在「文章」(多)中先加 belongsTo。
文章「屬於」作者。這個應該沒有疑問。
class Post {
String content
Date dateCreated
static constraints = {
content(blank: false)
}
static belongsTo = [ user : User ]
}
最後的 static belongsTo = [ user : User ] 當然是我們注意的重點。
這個 [ user : User ] 其實是一個map,不過一個小寫的user ,一個大寫的 User有何用處?
這個user是給我們用做參考關聯的。透過這個寫法,Post 也可以反著查詢 User了。
例如有一個畫面是閱讀某人寫的文章,最上面需要出現那個人的id。因為我們在這裡已經建立好倒回去關聯 User 時的變數名稱 「user」,所以只要 post.user.userId 便很快的可以得到我們要的結果。
你可能也看過
static belongsTo = User
的寫法,如果這樣寫的話,post 就不能反過來查到對應的 user了。如果沒有必要從 Post 反查 User 時,這樣寫當然有一點效能上的優勢。belongsTo 還有要注意的一點,既然都說自己「屬於」別人了,所以當 User 從資料庫上被幹掉的同時,Post 也沒有任何存在的必要了。這個就是「屬於」的觀念。
當然在 User 這個類別上,也要記得加上
static hasMany = [ post : Post ]
如此一來關聯就正式接上了。接上之後有很多預設的神奇招式,在下一章會講到。
沒有留言:
張貼留言