我的模型结构如下所示:
type Detail struct {
Product
Stocks
}
type Product struct {
Name string `db:"name"`
Id int `db:"id"`
}
type Stocks {
Name string `db:"name"`
Price float `db:"price"`
Type string `db:"type"`
}
我会有一个查询加入上面的表格,如下所示:
query, args, err := sqlx.In("select p.name , s.price from Product p,Stocks s where p.name=s.name and type IN (?)",typecodes)
query = s.Cmd.Db.Rebind(query)
var rows *sqlx.Rows
rows, err = s.Cmd.Db.Queryx(query, args...)
for rows.Next() {
var p model.Detail
err = rows.StructScan(&p)
}
想知道我什么时候 rows.StructScan(& p)将填充产品结构名称字段,或者是否会找到相同的任何气氛,因为Stocks也有一个名称字段?
目前我没有得到任何结果。但是当我评论Stocks结构中的名称字段时,我正在获取数据。
让我知道我在这里缺少什么。
答案 0 :(得分:2)
对于含糊不清的字段,最好使用其结构名称的前缀对其进行注释,例如: product_name
,stock_name
,然后在SQL语句中对它们进行适当的别名。
即。
type Detail struct {
Product
Stocks
}
type Product struct {
Name string `db:"product_name"`
Id int `db:"id"`
}
type Stocks {
Name string `db:"stock_name"`
Price float `db:"price"`
Type string `db:"type"`
}
在你的SQL中:
SELECT p.name AS product_name, s.name AS stock_name, ... FROM Product p, Stocks s WHERE ...