【发布时间】:2021-08-31 13:10:17
【问题描述】:
我的数据库包括以下列“model_package”和“model_variant”。我尝试通过在 .Select() 中指定这两个列来使用 Gorm 查询数据库,但是,我不断收到扫描错误。通常,当我选择一个列(即.Select("model_package"))时,它会返回一个包含所有值的数组(切片),所以我假设当我选择多个列时它应该返回一个二维数组(切片),如下面是我的代码。
我的目标是将两个字段组合成一个字符串。例如,如果 db 中的一行具有以下值“model_package”:“pkg1”和“model_variant”:“var1”,那么我想创建这个字符串“pkg1_var1”。如何构造正确的查询以获取数据库上每一行的两个值。
我的代码:
func (s *store) ListAllModelNames() ([][]string, error) {
var modelNames [][]string
result := s.db.Table(mfcTable).Select("model_package", "model_variant").Scan(&modelNames)
if result.Error != nil {
return nil, result.Error
}
return modelNames, nil
}
错误:
sql: Scan error on column index 0, name "model_package": destination not a pointer; sql: Scan error on column index 0, name "model_package": destination not a pointer; sql: Scan error on column index 0, name "model_package": destination not a pointer; sql: Scan error on column index 0, name "model_package": destination not a pointer; sql: Scan error on column index 0, name "model_package": destination not a pointer; sql: Scan error on column index 0, name "model_package": destination not a pointer; sql: Scan error on column index 0, name "model_package": destination not a pointer; sql: Scan error on column index 0, name "model_package": destination not a pointer
【问题讨论】:
-
您是否尝试过扫描到结构数组中?或者,您可以在 SQL 中连接
model_package和model_variant,生成一个字符串,然后您可以将其扫描到var modelNames []string。