在今天在利用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的官方文档也是真的懒