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

我正在将戈姆与 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,这是初始化结构用户时的默认值。


月关宝盒
浏览 117回答 1
1回答

交互式爱情

User.Id将具有正确的值,因为您已添加该字段并将其标记为主键。 实际访问 。这也具有 primaryKey 标记,但它被类型上的字段所取代。user.IDuser.Model.IDIdUser你已经嵌入了类型(根据文档,我想),但这意味着你的类型实际上看起来像这样:gorm.ModelUserUser{    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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go