9
我的model
type BingoCategory struct {
Id int `orm:"id,primary" json:"id"`
CateName string `orm:"cate_name,unique" json:"cate_name"`
Slug string `orm:"slug,unique" json:"slug"`
Counts int `orm:"counts" json:"counts"`
ParentId int `orm:"parent_id" json:"parent_id"`
Intro string `orm:"intro" json:"intro"`
ListOrder int `orm:"list_order" json:"list_order"`
CreatedAt int64 `orm:"created_at" json:"created_at"`
UpdatedAt int64 `orm:"updated_at" json:"updated_at"`
Cover string `orm:"cover" json:"cover"`
Template string `orm:"template" json:"template"`
Status int `orm:"status" json:"status"`
}
其中Id为主键,CateName不允许重复 执行Update方法时生成的sql有问题
UPDATE `bingo_category` SET `created_at`=0,`updated_at`=1572961915,`cover`='',`template`='',`cate_name`='NewAbc',`slug`='new-adb',`counts`=0,`list_
order`=0,`status`=1,`id`=1,`parent_id`=0,`intro`='' WHERE cate_name='NewAbc'
会把cate_name作为更新的条件,我觉得是不是应该把id作为更新的条件呢? 经调试发现是gdb.GetWhereConditionOfStruct方法中的structs.TagMapField(pointer, []string{ORM_TAG_FOR_STRUCT}, true)影响SQL的生成结果,把true改成false就实现的预期目标
UPDATE `bingo_category` SET `template`='',`status`=1,`id`=1,`parent_id`=0,`intro`='',`cover`='',`created_at`=0,`updated_at`=1572962068,`cate_name`
='NewAbc',`slug`='new-adb',`counts`=0,`list_order`=0 WHERE id=1