model的struct必须有一个pk

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

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

原生成的是:

  1. package models
  2. type SunnyUserAndGroup struct {
  3. UserId int `orm:"column(user_id);"`
  4. UserGroupId int `orm:"column(user_group_id);"`
  5. }

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

  1. package models
  2. import (
  3. "github.com/astaxie/beego/orm"
  4. )
  5. type SunnyUserAndGroup struct {
  6. UserId int `orm:"column(user_id);"`
  7. UserGroupId int `orm:"column(user_group_id);"`
  8. }
  9. func (t *SunnyUserAndGroup) TableName() string {
  10. return "sunny_user_and_group"
  11. }
  12. func init() {
  13. orm.RegisterModel(new(SunnyUserAndGroup))
  14. }
  15. //only insert one
  16. func AddSunnyUserAndGroup(m *SunnyUserAndGroup) (id int64, err error) {
  17. o := orm.NewOrm()
  18. id, err = o.Insert(m)
  19. return
  20. }

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

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