直入主题,这是我在写分页和获取数据总数同时查询的时候报的错误;
其原因就是把查询总数的语句写在了分页查询后面,正确的应该放在分页查询前面,只有知道总数才能够分页查询的,修正后代码
//查询文章列表以及查询某个参数 - model
func FIndArticle(c *gin.Context,params *entity.ArticleQuery) (body []entity.Article,total int64,err error) {
Db := BlogDB()
if title,isExist := c.GetQuery("title"); isExist == true {
Db = Db.Where("title = ?",title)
}
if params.StartTime >0 && params.EndTime>0 {
Db = Db.Where("create_at BETWEEN ? AND ?",params.StartTime,params.EndTime)
}
if params.TypeId >0 {
Db = Db.Where("type_id = ?",params.TypeId)
}
if err = Db.Model(entity.Article{}).Count(&total).Error;err != nil {
logrus.New().WithFields(logrus.Fields{
"animal": err,
}).Info("GetArticle - model - count")
return
}
if params.Current>0 && params.PageSize>0 {
Db = Db.Offset((params.Current - 1) * params.PageSize).Limit(params.PageSize)
}
if err = Db.Find(&body).Error; err != nil {
logrus.New().WithFields(logrus.Fields{
"animal": err,
}).Info("GetArticle - model - find")
return
}
if gorm.IsRecordNotFoundError(err) {
err = nil
}
return
}