标签:
如果查询出来的 Goods
字段没有值,可能是由于以下几个原因:
-
关系没有正确设置: 需要确保在
OrderGoods
和Goods
之间的关系是正确的。你需要根据Goods
表的goodsid
列进行外键引用。确保OrderGoods
表中的goodsid
与Goods
表中的id
匹配。 -
查询方式不正确: 使用
With
方法时需要确保 ORM 正确识别到你想要的关联查询。确保在查询OrderGoods
的同时也查询Goods
。 -
数据不存在: 确保在数据库中,存在对应的
Goods
记录与OrderGoods
中的goodsid
值匹配。
为了确保你能够查询到 Goods
的值,可以根据以下示例代码来进行更为明确的查询操作:
修改后的代码示例
func GetOrderDetail(orderId int) (*OrderDetailRes, error) {
var orderDetail OrderDetailRes
err := db.Table("ims_ewei_shop_order").
Where("id = ?", orderId).
WithAll(). // 获取相关表的所有数据
Scan(&orderDetail)
if err != nil {
return nil, err
}
// 若 OrderGoods 不为 nil,进一步查询 Goods 信息
if orderDetail.OrderGoods != nil {
for _, orderGoods := range orderDetail.OrderGoods {
// 获取 Goods 信息
err = db.Table("ims_ewei_shop_goods").
Where("id = ?", orderGoods.Goodsid).
Scan(&orderGoods.Goods) // 直接将查询结果赋值
if err != nil {
return nil, err
}
}
}
return &orderDetail, nil
}
Go
说明:
-
手动查询 Goods: 在查询
OrderGoods
后,手动对每一个OrderGoods
进行查询,填充其Goods
附加信息。 -
数据有效性检查: 确保
orderDetail.OrderGoods
不为nil
后再执行内部循环查询Goods
。
提示:
- 确保数据库中
ims_ewei_shop_order_goods
表的goodsid
存在对应的ims_ewei_shop_goods
表的id
。 - 可在数据库直接执行简单的 SQL 查询来验证数据是否存在,确保你的模型和数据库中的数据是一致的。
这样处理后,理论上应该能查询到 Goods
的值。如果仍有问题,建议调试或打印关键变量,检查数据流程。
标签: 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。