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);"`
}