Gozero学习:报错sql: expected 6 destination arguments in Scan, not 1

 这是我查询数据库列表得逻辑代码

func (l *ProductTypeListLogic) ProductTypeList(req *types.ProductTypeListRequest) (resp *types.ProductTypeListResponse, err error) {
	list := []model.ProductType{}
	total := int64(0)
	sqlQuery := l.svcCtx.DB.Model(&model.ProductType{})
	totalQuery := l.svcCtx.DB.Model(&model.ProductType{})
	if req.PageSize > 0 && req.PageNum > 0 {
		sqlQuery.Offset((req.PageNum - 1) * req.PageSize).Limit(req.PageSize)
	}
	if req.ProductTypeName != nil {
		sqlQuery.Where("product_type_name LIKE ?", "%"+*req.ProductTypeName+"%")
		totalQuery.Where("product_type_name LIKE ?", "%"+*req.ProductTypeName+"%")
	}
	err = sqlQuery.Find(&list).Error
	err = totalQuery.Find(&total).Error
	if err != nil {
		return nil, err
	}
	resList := []types.ProductTypeDetailResponse{}
	for _, v := range list {
		resList = append(resList, types.ProductTypeDetailResponse{
			Id:              v.Id,
			ProductTypeName: v.ProductTypeName,
			ProductTypeCode: v.ProductTypeCode,
			ProductTypeDesc: v.ProductTypeDesc,
			SortCode:        v.SortCode,
		})
	}
	resp = &types.ProductTypeListResponse{
		List:  resList,
		Total: total,
	}
	return
}

数据库表定义:

type ProductType struct {
	Id              string `json:"id" gorm:"primaryKey;type:varchar(36);column:id"`
	ProductTypeName string `json:"product_type_name" gorm:"type:varchar(255);column:product_type_name;uniqueIndex;not null"`
	ProductTypeCode string `json:"product_type_code" gorm:"type:varchar(255);column:product_type_code"`
	ProductTypeDesc string `json:"product_type_desc" gorm:"type:text;column:product_type_desc"`
	SortCode        int64  `json:"sort_code" gorm:"type:bigint;column:sort_code;uniqueIndex;not null"`
	CreatedAt       time.Time
}

 查询表中数据列表时报错:

错误来源:totalQuery.Find(&total) 试图将查询结果直接扫描到一个 int64 变量中,但这是不正确的,因为 Find 方法期望的是一个结构体切片或指针。

解决方法:将Find改成Count,解决!

err = totalQuery.Find(&total).Error
err = totalQuery.Count(&total).Error

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值