GORM Golang ORM 關聯:預先載入相關記錄
GORM 是一種流行的 Go ORM,可以簡化資料庫操作。使用 ORM 時,管理相關記錄之間的關聯至關重要。在這種情況下,我們將探索如何使用 GORM 的預先載入功能有效率地檢索相關記錄。
考慮一個場景,其中我們有兩個結構體:Place 和 Town。每個 Place 屬於一個 Town,每個 Town 都有多個 Place。
type Place struct { ID int Name string Town Town } type Town struct { ID int Name string }
要取得所有Places 並為每個Place 急切載入對應的Town,我們可以使用Preload 函數:
db.Preload("Town").Find(&places)
這一行程式碼執行兩個查詢:一個用於取得所有地點,另一個用於獲取具有匹配地點的所有城鎮。產生的 Place 結構切片將填滿 Town 欄位。
fmt.Println(places) // Output: [{1 Place1 {1 Town1}} {2 Place2 {1 Town1}}]
這種方法很有效,因為它避免了 N 1 問題,當您需要執行 N 個附加查詢來檢索相關記錄時,就會出現這種問題。預先載入使我們能夠在兩次查詢中檢索所有必要的數據,從而使處理更大的數據集更加高效。
以上是GORM的Preload功能如何有效率地取得Go中的相關記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!