gorm-增删改查

1.更新-附加条件

#调用的地方
query := " company_id = ? AND userid = ?"
err := company.Update(c, company, query, _cId, _uId)

#这里有个小坑,
# 调用Update方法 param参数中没设置主键 ID ,这里需要专门传入where 条件调用Where 方法
func (c *MizOutCompanyMember) Update(ctx context.Context, param *MizOutCompanyMember, query string, args ...interface{}) error {
	err := c.GetTable().WithContext(ctx).Where(query,args...).Updates(param).Error
	return err
}

#对于Update方法如果,传入更新的字段有表主键ID,则不需要单独传入where条件
#调用  && update 方法实现 :
erro = upCompay.Update(c, upCompay)
func (c *MizOutCompany) Update(ctx context.Context, param *MizOutCompany) error {
	err := c.GetTable().WithContext(ctx).Updates(param).Error
	return err
}

**

2. 同一个字段多值查询

**

#调用
var uIds []int64 //获取所有员工ID
	for _, row := range rows {
		uIds = append(uIds, row.Userid)
	}
	user := &m.MizUser{}
	query := "id"
	ucount, urows, err := user.Query(c, query, uIds)
	if ucount == 0 || err != nil {
		p.ReError(c, http.StatusInternalServerError, "find user info error"+err.Error(), "")
		return
	}
#gorm 方法实现
func (c *MizUser) Query(ctx context.Context, query string, args ...interface{}) (count int64, rows []*MizUser, err error) {
	tx := c.GetTable().WithContext(ctx)
	tx.Count(&count)
	err = tx.Where(query,args...).Find(&rows).Error
	return count, rows, err
}

你可能感兴趣的:(gorm,增删改查)