【发布时间】:2022-01-09 12:11:34
【问题描述】:
我正在使用 GORM,我有这些模型:
type User struct {
ID uint
UUID uuid.UUID
Email string
}
type Profile struct {
ID uint
UUID uuid.UUID
Domain string
UserID uuid.UUID
User User `gorm:"references:UUID"`
}
现在我想查找所有具有域的个人资料的用户,例如example.com.
我已经尝试了一些“加入”查询,但我没有让它工作。但是我设法通过使用子查询使其工作:
var users []users
DB.Where(
"uuid IN (?)",
DB.Select("user_id").Where("domain = ?", "example.com").Table("profiles")
).Find(&users)
但我不认为这是一种非常优雅的方式。我认为加入会更直接。如何将此子查询转换为联接查询?
谢谢!
【问题讨论】:
-
我认为您在子查询中选择了错误的列
DB.Select("user_id")应该是DB.Select("uuid")对吧? (gorm: "references:UUID") -
@DavidYappeter 没有子查询工作正常。配置文件表上的字段称为
user_id,它引用了用户的字段uuid。