我刚开始学习GORM,目前正在尝试从一个到多个表中获取数据。我有两个表:用户和文档。一个用户可以拥有多个文档。当我尝试获取文档时,我一直得到错误
documents: unsupported relations for schema User
SELECT * FROM "users" WHERE "users"."deleted_at" IS NULL
下面是我试图获取数据的代码
type User struct {
gorm.Model
Name string
Email string
Password string
Documents []Document
}
type Document struct {
gorm.Model
Name string
DateCreated string
UserID uint
}
获取数据的函数
func GetAll(db *gorm.DB) ([]models.User, error) {
var users []models.User
// err := db.Model(&models.User{}).Preload("documents").Find(&users).Error
err:=db.Preload("documents").Find(&[]models.User{}).Error
fmt.Println(err)
fmt.Println("got users")
return users, err
}
我在这里做错了什么?
这是由于您的Table没有包含相关字段"deleted_at"就像您使用了gorm.Model一样。如果你用gorm。模型,它将自动集成4个字段作为
ID: an auto-incrementing integer primary key
CreatedAt: a timestamp of when the record was created
UpdatedAt: a timestamp of when the record was last updated
DeletedAt: a soft delete timestamp used to mark the record as deleted instead of actually deleting it from the database.
如果不需要,可以直接使用
db.Unscoped().
Ex:
db.Unscoped().Where("param = ?", "param").Find(&YourStruct)
然后它会解决这个问题。
[我知道你已经解决了这个问题,但我为任何其他面临类似情况的人添加了这个]