2 回答
TA贡献1765条经验 获得超5个赞
您正在使用db.Related哪个来自旧版本的库。V2 具有更强大的关系处理方法。如果您被困在 V1 中,以下可能仍然有效(我发现Related在 v1 中有错误,但Preload应该可以)。
在 V2 中,这可以按您的预期工作:
type User struct {
ID uint
Mail string
Password string
AuthLevel uint
Created []User `gorm:"foreignkey:UserID"`
UserID *uint
}
//...
user1 := User{Mail: "JimmyJohnson@Test.com", Password: "1234", AuthLevel: 1}
db.Create(&user1)
user2 := User{Mail: "HowardHills@Test.com", Password: "1234", AuthLevel: 2, UserID: &user1.ID}
db.Create(&user2)
var result User
db.Preload("Created").First(&result, user1.ID)
// result.Created[0] is user2
请注意,我创建了 UserID*uint并且在创建时没有给它一个值user1,这样可以避免在尝试为此列插入 0 时违反外键。
此外,通过使用,Preload您不必再次调用Relatedor Association。
- 2 回答
- 0 关注
- 132 浏览
添加回答
举报