
我在這張圖片中有 3 張桌子。
一個表“user”可以有很多“catalog_habit”,而“catalog_habit”可以有很多“habit”。
我正在嘗試找到一種使用 Gorm Preload 使 API 顯示來自“用戶”表的特定“id”主鍵的所有“習慣”相關表的方法。
它可以顯示 3 個表的所有資訊,但我只想為前端人員獲取“習慣”資訊:(
請幫幫我,謝謝!
uj5u.com熱心網友回復:
這取決于您希望如何加載和顯示此資料。
只需加載指定用戶的所有習慣
var habits []Habit
err := db.Joins("JOIN catalog_habit ch ON ch.id = habit.catalog_id").
Joins("JOIN user u ON u.id = ch.user_id").
Where("u.id = ?", userID).Find(&habits).Error
加載用戶及其目錄習慣和習慣
為此,您的結構應該是這樣的:
type User struct {
//other fields
CatalogHabits []CatalogHabit
}
type CatalogHabit struct {
// other fields
UserID int64
Habits []Habit
}
type Habit struct {
//other fields
CatalogHabitID int64
}
然后,您可以撰寫一個查詢來加載用戶資料,以及他的目錄習慣和習慣:
var user User
err := db.Preload("CatalogHabits.Habits").First(&user, userID).Error
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/512001.html
標籤:去
上一篇:云圖說丨帶你了解GaussDB(for Redis)雙活解決方案
下一篇:SQL抽象語法樹及改寫場景應用
