为了账号安全,请及时绑定邮箱和手机立即绑定

Gorm 未提供正确插入的记录的主键 ID

Gorm 未提供正确插入的记录的主键 ID

Go
月关宝盒 2022-09-26 19:35:17
我正在将戈姆与 GO 一起使用。我有一个实体用户type User struct {    Id int `json:"id" gorm:"primaryKey;autoIncrement"`    Name string `json:"name"`    gorm.Model}我的创建记录代码是user := User{}user.Name = "Afzal"DB.Create(&user)现在按照文档应该返回插入的数据的主键user.ID但它返回 0,这是初始化结构用户时的默认值。
查看完整描述

1 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

User.Id将具有正确的值,因为您已添加该字段并将其标记为主键。 实际访问 。这也具有 primaryKey 标记,但它被类型上的字段所取代。user.IDuser.Model.IDIdUser


你已经嵌入了类型(根据文档,我想),但这意味着你的类型实际上看起来像这样:gorm.ModelUser


User{

    Id    int

    Name  string

    gorm.Model{

        ID        uint `gorm:"primarykey"`

        CreatedAt time.Time

        UpdatedAt time.Time

        DeletedAt DeletedAt `gorm:"index"`

    }

}

因此,当您查看 时,您正在访问嵌入的字段。选中字段(小写),或删除已添加的字段,并依赖嵌入的 .user.IDIDIddIdIDModel


如果你确实想保留自己的领域,我认为把它变成一个是正确的。如果您需要在数据中使用负ID元素,那么您可能做错了什么......我见过负面ID被使用,但每次我看到它发生时,它都是一些绝对可怕的黑客攻击。Idgorm.Modeluint


查看完整回答
反对 回复 2022-09-26
  • 1 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信