【发布时间】:2018-12-08 04:29:19
【问题描述】:
问题是当我对对象使用结构标签时,它们无法正常工作。我之前做过项目,做过同样的事情,但没有问题,但我不知道为什么。
例子:
这不起作用:
type Category struct {
ID int `json:"id" db:"category.id"`
Name string `json:"name" db:"category.name"`
Description string `json:"description" db:"category.description"`
}
收到错误:
missing destination name id in *[]Category
这很好用:
type Category struct {
ID int `json:"id" db:"id"`
Name string `json:"name" db:"name"`
Description string `json:"description" db:"description"`
}
查询:
result := []Category{}
query := `
SELECT category.id, category.name, category.description FROM category;
`
err := sqlx.Select(db, &result, query)
在 SQL 编辑器中运行查询可以正常工作。我还参与了一个专有项目,在该项目中将表名附加到标签上效果很好,但无论出于何种原因,我似乎都无法做到这一点。
感谢您的帮助,
编辑:
使用mysql
【问题讨论】:
-
您使用的是什么数据库?看起来像在 MySQL 上,它从选定的列中省略了表名,即使它们是模棱两可的。
-
我认为 SQLx 期望直接结构字段具有非限定名称。 “table.field”表示法被解析为嵌入式结构。我有一些嵌入其他结构的结构,我使用“table.field”表示法在单个查询中同时扫描外部结构和嵌入结构。
-
@MadWombat 问题是我已经在另一个项目中做到了(没有嵌套结构)并且它已经工作了。不幸的是,我无法链接这个东西,因为代码不是开源的。它也使用了mysql。我想知道是否有 mysql 设置或 sqlx 设置我可以更改以使其正常工作,但是几个小时的谷歌搜索和实验并没有让我到任何地方,所以我想我会问
-
@RayfenWindspear 是的,你是对的,解决方案是将
columnsWithAlias=true添加到连接中-_- 我觉得自己像个白痴 -
这将是一个很好的机会来回答您自己的问题。我相信某个地方的某个人会发现这很有用。