我有三个模型,一个嵌入到另一个:
// same with db table "users" struct except UserEmail embedded
type User struct {
ID string `json:"id"`
EmailID string `json:"-"`
*UserEmail `json:",inline" gorm:"foreignKey:EmailID;references:UserEmailID"`
}
// not same with db table "email" struct
type UserEmail struct {
UserEmailID string `json:"-"`
UserEmail string `json:"user_email"`
}
// same with db table "email" struct
type Email struct {
ID string `json:"id"`
Email string `json:"email"`
}
字符串
我需要从2名为用户和电子邮件表预加载数据。
我的预加载代码看起来像这样,但会导致错误“ERROR:column users.email_id does not exist(SQLSTATE 42703)":
err = db.ORM.Model(&Users{}).
Preload("UserEmail", func(db *gorm.DB) *gorm.DB {
return db.Model(&Email{}).Select("id as user_email_id, email as user_email")
}).
Find(&resp).Error
型
1条答案
按热度按时间mwngjboj1#
你能提供模式数据库,也许这些信息会对你的问题很有用。
ERROR: column users.email_id does not exist (SQLSTATE 42703)
表示users
表中的email_id
列不存在。我想在你的schema DB中列名不是
email_id
而是user_email_id
。也许你的表users
schema是这样的:字符串
模式表
user_emails
如下:型
如果我对数据库模式的猜测是正确的,那么修复可能是这样的:
型
添加标签Column Name来保持你的name结构属性,你的预加载不需要查询sql别名来转换列
id as user_email_id
,因为已经使用了标签Column Name,最后的代码如下:型