model 的 struct 必须有一个 pk

优质
小牛编辑
118浏览
2023-12-01

model的struct必须有一个pk

Beego规定在models里面的struct必须有一个PK,如果没有的话,会提示 github.com/sunnygocms/managementCMS/models.SunnyUserAndGroup need a primary key field

这个是以bee -api 根据sunny_user_and_group这个表自动生成的为例来解释。

原生成的是:

package models
type SunnyUserAndGroup struct {
    UserId      int `orm:"column(user_id);"`
    UserGroupId int `orm:"column(user_group_id);"`
}

明显是什么都不能做,我按照别的models修改了一下,于是就报了上面的错误,修改的文件如下:

package models
import (
    "github.com/astaxie/beego/orm"
)

type SunnyUserAndGroup struct {
    UserId      int `orm:"column(user_id);"`
    UserGroupId int `orm:"column(user_group_id);"`
}
func (t *SunnyUserAndGroup) TableName() string {
    return "sunny_user_and_group"
}
func init() {
    orm.RegisterModel(new(SunnyUserAndGroup))
}

//only insert one
func AddSunnyUserAndGroup(m *SunnyUserAndGroup) (id int64, err error) {
    o := orm.NewOrm()
    id, err = o.Insert(m)
    return
}

经过研究知道是因为Beego要求必须有一个主键,因为我原表里面是双主键,估计是bee没有自动生成好。其实修改起来也是非常方便的:


type SunnyUserAndGroup struct {
    UserId      int `orm:"column(user_id);pk"`  //此处加上pk
    UserGroupId int `orm:"column(user_group_id);"`
}