首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用GORM获取数据

无法使用GORM获取数据
EN

Stack Overflow用户
提问于 2020-02-04 12:00:49
回答 2查看 635关注 0票数 1

我试图从mysql数据库中获取数据,但没有返回任何内容。是我第一次使用Gorm,我对Go的体验很差。

代码语言:javascript
复制
package main

import (
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mysql"
    "fmt"
)

type productos struct {
    gorm.Model

    id_producto int         `gorm:"type:int, primary_key"`
    stock       int         `gorm:"type:int"`
    codigo      string      `gorm:"type:varchar(45)"`
    rubro       string      `gorm:"type:varchar(100)" `
    descripcion string      `gorm:"type:varchar(140)" `
    proveedores string      `gorm:"type:varchar(250)" `
    moneda      string      `gorm:"type:varchar(10)" `
    costo       float32     `gorm:"type:decimal" `
    iva         float32     `gorm:"type:decimal" `
    pedir       bool        `gorm:"type:tinyint" `
}

func main() {
    db, err := gorm.Open("mysql", "root:1281@/electronica?charset=utf8&parseTime=True&loc=Local")

    if(err != nil){
        panic(err)
    }else{
        fmt.Println("Conexión obtenida")
    }

    prod := &productos{}

    db.First(&prod)

    fmt.Println(prod.codigo)

    db.Close()
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-04 19:54:13

使用以下代码片段:

代码语言:javascript
复制
type Productos struct {
    gorm.Model
    // Remove the ProductoID field if you want to use the default gorm Model
    // ProductoID int     `gorm:"type:int, primary_key"`
    Stock       int     `gorm:"type:int"`
    Codigo      string  `gorm:"type:varchar(45)"`
    Rubro       string  `gorm:"type:varchar(100)" `
    Descripcion string  `gorm:"type:varchar(140)" `
    Proveedores string  `gorm:"type:varchar(250)" `
    Moneda      string  `gorm:"type:varchar(10)" `
    Costo       float32 `gorm:"type:decimal" `
    Iva         float32 `gorm:"type:decimal" `
    Pedir       bool    `gorm:"type:tinyint" `
}

func main() {
    db, err := gorm.Open("mysql", "root:admin123@/test?charset=utf8&parseTime=True&loc=Local")
    if err != nil {
        panic(err)
    }
    defer db.Close()

    if !db.HasTable(&Productos{}) {
        if err := db.AutoMigrate(&Productos{}).Error; err != nil {
        }
        db.Create(&Productos{
            Stock:       2,
            Codigo:      "a",
            Rubro:       "b",
            Descripcion: "c",
            Proveedores: "d",
            Moneda:      "e",
            Costo:       0,
            Iva:         0,
        })
    }

    producto := &Productos{}
    db.First(producto)

    fmt.Printf("%+v\n", producto)
}

正如@Burak Serdar指出的那样,您的字段不会导出(不大写),因此在您的示例中,它们对于gorm包是不可见的

In Go, a name is exported if it begins with a capital letter. Any "unexported" names are not accessible from outside the package.

欲了解更多信息,请访问:Exported names

票数 2
EN

Stack Overflow用户

发布于 2020-02-05 18:57:51

我知道答案了。我的问题是:我包含了默认的Gorm模型,这与数据库不一样,当把它放出来时,它工作得很好

真的为我糟糕的英语感到抱歉

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60050395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档