Gorm仅通过查找仅获得一个记录

发布于 2025-01-22 06:36:22 字数 988 浏览 0 评论 0 原文

我正在尝试从DB中获取所有记录, 使用查找以获取条件记录, 这是我的代码

result := map[string]interface{}{}

conn = conn.Table("routeName")
conn = conn.Where("status = ?", 1)
conn = conn.Find(&result).Debug()

fmt.Println(result)

使用界面,我只得到一行,结果遵循

map[id:1 routeName:FAFA status:1 routeCode:A]

我认为这是我的界面问题,因此我尝试使用数组作为结果, 这是Antoher定义结果

var result []model.RouteName

,我得到了以下记录

{[0    0][0    0]}

,记录我的记录数据没有放入结果,以使我确实从DB中获得了行记录,使用Count Func来计数记录并获得2,所以我认为我认为我确实会获取记录,但是以某种方式我无法正确获得记录价值,以下是我的模型,

type RouteName struct {
    id           int    `gorm:"column:id" json:"id"`
    routeName    string `gorm:"column:routeName" json:"routeName"`
    status       int    `gorm:"column:status" json:"status"`
    routeCode    string `gorm:"column:routeCode" json:"routeCode"`
}

func (RouteName) TableName() string {
    return "routeName"
}

我不知道为什么它这样的工作需要一些建议来修复它。

I'm trying to get all records from my DB,
using Find to get condition records,
here's my code

result := map[string]interface{}{}

conn = conn.Table("routeName")
conn = conn.Where("status = ?", 1)
conn = conn.Find(&result).Debug()

fmt.Println(result)

As using interface, I only get one row, result as following

map[id:1 routeName:FAFA status:1 routeCode:A]

I thought it's my interface's problem, so I tried using array as result,
here's antoher define result

var result []model.RouteName

with this, I got following records

{[0    0][0    0]}

seen that my records data didn't put into result, to comfire that I did get row records from DB, Using count func to count records and result get 2, so I think that I do get records, but somehow I can't correctly get records value, following is my model

type RouteName struct {
    id           int    `gorm:"column:id" json:"id"`
    routeName    string `gorm:"column:routeName" json:"routeName"`
    status       int    `gorm:"column:status" json:"status"`
    routeCode    string `gorm:"column:routeCode" json:"routeCode"`
}

func (RouteName) TableName() string {
    return "routeName"
}

I have no idea that why it's work like this, need some advice to fix it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

凉墨 2025-01-29 06:36:22

Gorm无法访问结构中的字段,因为它们没有导出。

导出的标识符

可以导出标识符以允许从另一个软件包访问它。
如果两者都会导出标识符:

  • 标识符名称的第一个字符是Unicode上案字母(Unicode类“ Lu”);和
  • 标识符在软件包块中声明,或者是字段名称或方法名称。

所有其他标识符均未导出。

之后

type RouteName struct {
id           int    `gorm:"column:id" json:"id"`
routeName    string `gorm:"column:routeName" json:"routeName"`
status       int    `gorm:"column:status" json:"status"`
routeCode    string `gorm:"column:routeCode" json:"routeCode"`
}

type RouteName struct {
    Id           int    `gorm:"column:id" json:"id"`
    RouteName    string `gorm:"column:routeName" json:"routeName"`
    Status       int    `gorm:"column:status" json:"status"`
    RouteCode    string `gorm:"column:routeCode" json:"routeCode"`
}

Gorm cannot access fields in your struct because they are not exported.

Exported identifiers

An identifier may be exported to permit access to it from another package.
An identifier is exported if both:

  • the first character of the identifier's name is a Unicode upper case letter (Unicode class "Lu"); and
  • the identifier is declared in the package block or it is a field name or method name.

All other identifiers are not exported.

Before

type RouteName struct {
id           int    `gorm:"column:id" json:"id"`
routeName    string `gorm:"column:routeName" json:"routeName"`
status       int    `gorm:"column:status" json:"status"`
routeCode    string `gorm:"column:routeCode" json:"routeCode"`
}

After

type RouteName struct {
    Id           int    `gorm:"column:id" json:"id"`
    RouteName    string `gorm:"column:routeName" json:"routeName"`
    Status       int    `gorm:"column:status" json:"status"`
    RouteCode    string `gorm:"column:routeCode" json:"routeCode"`
}

情话难免假 2025-01-29 06:36:22

(编辑)为此答案添加一些描述。

Gorm将使用反射映射每个导出的struct标签和
写入相应的字段。
和未出现的字段将较早


我认为您应该尝试宣传您的结构字段。

type RouteName struct {
    ID           int    `gorm:"column:id" json:"id"`
    RouteName    string `gorm:"column:routeName" json:"routeName"`
    Status       int    `gorm:"column:status" json:"status"`
    RouteCode    string `gorm:"column:routeCode" json:"routeCode"`
}

(Edit) Add some description for this answer.

GORM will use reflection to map each exported struct tag and
write into the corresponding field.
And unexported fields will be filtered out earlier here


I think you should try to publicize your struct fields.

type RouteName struct {
    ID           int    `gorm:"column:id" json:"id"`
    RouteName    string `gorm:"column:routeName" json:"routeName"`
    Status       int    `gorm:"column:status" json:"status"`
    RouteCode    string `gorm:"column:routeCode" json:"routeCode"`
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文