users使用gorm,我為和product_prices表創(chuàng)建了以下模型// model for table `users`type User struct { Id uint64 `json:"id" gorm:"primaryKey"` Email string `json:"email" gorm:"unique"` Password []byte `json:"-"` CreatedOn time.Time `json:"created_on" gorm:"<-:create"` UpdatedOn time.Time `json:"updated_on"`}// model for table `product_prices`type ProductPrice struct { Id uint64 `json:"id" gorm:"primaryKey"` Price float64 `json:"price"` Direction string `json:"direction"` NotificationMethod string `json:"notification_method"` CreatedOn time.Time `json:"created_on,omitempty" gorm:"<-:create"` UpdatedOn time.Time `json:"updated_on,omitempty"` LastNotified time.Time `json:"last_notified,omitempty"` UserId uint64 `json:"user_id"` User User `json:"-" gorm:"foreignKey:UserId"`}我想做一些類似在product_prices和users表之間執(zhí)行以下sql連接的事情select product_prices.id, product_prices.price, product_prices.created_on, users.email as user_email, users.created_on as user_created_on from product_prices join users on product_prices.user_id=users.id;這是我嘗試過但仍然不走運(yùn)的許多事情之一,這要?dú)w功于文檔頁面https://gorm.io/docs/query.html#Joins不夠清晰, 我還想遍歷行按照這里的文檔https://gorm.io/docs/query.html#Joins我嘗試了以下// struct for result of join querytype ProductPriceUser struct { Id uint64 `json:"id"` Price float64 `json:"price"` CreatedOn time.Time `json:"created_on,omitempty"` UserEmail User `json:"user_email"` UserCreatedOn User `json:"user_created_on"`}但是我遇到了各種各樣的錯誤,我做錯了什么,我如何得到我想要的,如上所述?謝謝!
1 回答

茅侃侃
TA貢獻(xiàn)1842條經(jīng)驗 獲得超22個贊
一種可能的解決方案是做這樣的事情(假設(shè)你的數(shù)據(jù)庫表被命名為product_pricesand users):
list := []ProductPriceUser{}
err := database.DB.Table("product_prices").
Join("JOIN users ON users.id=product_prices.user_id").
Select("product_prices.id, product_prices.price, product_prices.created_on, users.email as user_email, users.created_on as user_created_on").
Find(&list).Error
if err != nil {
// handle error
}
然后,您可以遍歷list以獲取每條記錄。
- 1 回答
- 0 關(guān)注
- 241 瀏覽
添加回答
舉報
0/150
提交
取消