我有这样的更新代码:
db.Model(&models.DailyPlan{}).
Where("daily_plan_id IN ?", dailyPlanIds).
Updates(updateClause).Error
和钩子:
func (d *DailyPlan) AfterSave(tx *gorm.DB) (err error) {
// blah blah
return
}
但是当我运行上面的更新代码时,在我的钩子中,我无法获得ID (daily_plan_id
)(只有updateClause
中的字段有数据)。
如何获取我在dailyPlanIds
中发送的ID
您可以基于这里使用Set/Get
您可以使用Where()查询记录,并在更新时将记录的指针传递给Model(),以便钩子可以触发并且您可以获得ID
// get plans
plans := []models.DailyPlan{}
db.Model(&models.DailyPlan{}).
Where("daily_plan_id IN ?", dailyPlanIds).
Find(&plans).Error
// update plans
db.Model(plans).
Updates(updateClause).Error