3
我正在構建一個「最近活動」頁面來給出一些背景。基本上這個頁面將是用戶執行的幾個不同動作的混搭。問題是這些數據跨越多個(3個左右)域對象類型,並且都有不同的字段。所有域都與用戶對象關聯,但關聯不同。在Grails中跨多個域對象的查詢
這些域是UserPost,FriendRequest和UserTask。有沒有辦法我可以查詢所有這些域名,支持分頁和按日期排序創建?改變我的結構會更好嗎?任何幫助將是偉大的!
我正在構建一個「最近活動」頁面來給出一些背景。基本上這個頁面將是用戶執行的幾個不同動作的混搭。問題是這些數據跨越多個(3個左右)域對象類型,並且都有不同的字段。所有域都與用戶對象關聯,但關聯不同。在Grails中跨多個域對象的查詢
這些域是UserPost,FriendRequest和UserTask。有沒有辦法我可以查詢所有這些域名,支持分頁和按日期排序創建?改變我的結構會更好嗎?任何幫助將是偉大的!
我已經爲我的網站實現了類似的功能,並得出結論:最好添加一個活動域類來記錄所有類型的活動。 假設
class Activity {
Date dateCreated
String linkClassName
Long linkId
def getLink() { getClass().classLoader.loadClass(linkClassName).get(linkId) }
}
然後,每當你在UserPost插入新記錄,FriendRequest和UserTask(或其他),創建與使用afterInsert
GORM events如下以及在活動的新條目:
def afterInsert = {
new Activity(linkClassName: this.class.name, linkId: this.id).save()
}
一旦你做到了這一點,你可以檢索你最近的活動是這樣的:
def activities = Activity.list(max: 5, sort:'dateCreated', order:'desc')
我喜歡這個解決方案,我認爲它會工作得很好。我可以非常靈活地編寫瘋狂的查詢。謝謝! – RyanLynch 2011-02-03 10:04:51