亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Gorm 查詢多個列

使用 Gorm 查詢多個列

Go
慕桂英546537 2022-09-05 17:35:25
我的數據庫包括以下列,“model_package”和“model_variant”。我嘗試通過在 里面指定這兩列來使用 Gorm 查詢 db。選擇(),但是,我不斷收到掃描錯誤。通常,當我選擇單個列(即)時,它會返回到包含所有值的數組(切片),因此當我選擇多列時,我認為它應該返回到二維數組(切片),就像下面的代碼一樣。.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
查看完整描述

1 回答

?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

您可以嘗試以下幾個選項:


選項 1 - 為 SELECT 查詢創建一個視圖模型,并將其返回以執行所需的操作。


type ModelName struct {

   ModelPackage string

   ModelVariant string

}


func (s *store) ListAllModelNames() ([]ModelName, error) {

    var modelNames []ModelName

    result := s.db.Table(mfcTable).Select("model_package", "model_variant").Scan(&modelNames)

    if result.Error != nil {

        return nil, result.Error

    }

    return modelNames, nil

}

選項 2 - 使用 SELECT 查詢中的函數進行串聯。CONCAT()


func (s *store) ListAllModelNames() ([]string, error) {

    var modelNames []string

    result := s.db.Table(mfcTable).Select("CONCAT(model_package, "_", model_variant)").Where("model_package IS NOT NULL AND model_variant IS NOT NULL").Scan(&modelNames)

    if result.Error != nil {

        return nil, result.Error

    }

    return modelNames, nil

}


查看完整回答
反對 回復 2022-09-05
  • 1 回答
  • 0 關注
  • 344 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號