在今天在利用GORM分页查询的时候遇到了这个问题,当时想的就是一下完成搜索,想的体检单了,然后查看相关文档让我用Scope但是,我比较懒,就没去研究
直接用分开的方法去查询
package model
import (
"github.com/gin-gonic/gin"
"github.com/jinzhu/gorm"
"github.com/sirupsen/logrus"
"go_service/entity"
)
func FIndArticle(c *gin.Context,params *entity.ArticleQuery) (body []entity.Article,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 params.Current>0 && params.PageSize>0 {
Db = Db.Limit(params.PageSize).Offset((params.Current - 1) * params.PageSize)
}
if err = Db.Find(&body).Error; err != nil {
logrus.WithError(err).Info("FindArticle - model")
return
}
if gorm.IsRecordNotFoundError(err) {
err = nil
}
return
}
自己分层编写,BlogDB()就是数据库的返回,然后因为在最初的时候就获取了参数,定义的结构体,直接取值,就可以了,如果不想,也可以直接用c.GetQuery()的方法获取传递的参数,总和然后在直接用Find方法去查就可以了
可能会报
这是gorm的并不是sql出错,仍是正常的。
本文连接:点击
博主个人小博客:嘿嘿
多说一句就是gin的官方文档真的差,还有就是webpack的官方文档也是真的懒