ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

查询出来Goods没有值是什么原因

2024-08-16 09:45:23  阅读:238  来源: 互联网

标签:


如果查询出来的 Goods 字段没有值,可能是由于以下几个原因:

  1. 关系没有正确设置: 需要确保在 OrderGoods 和 Goods 之间的关系是正确的。你需要根据 Goods 表的 goodsid 列进行外键引用。确保 OrderGoods 表中的 goodsid 与 Goods 表中的 id 匹配。

  2. 查询方式不正确: 使用 With 方法时需要确保 ORM 正确识别到你想要的关联查询。确保在查询 OrderGoods 的同时也查询 Goods

  3. 数据不存在: 确保在数据库中,存在对应的 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

说明:

  1. 手动查询 Goods: 在查询 OrderGoods 后,手动对每一个 OrderGoods 进行查询,填充其 Goods 附加信息。

  2. 数据有效性检查: 确保 orderDetail.OrderGoods 不为 nil 后再执行内部循环查询 Goods

提示:

  • 确保数据库中 ims_ewei_shop_order_goods 表的 goodsid 存在对应的 ims_ewei_shop_goods 表的 id
  • 可在数据库直接执行简单的 SQL 查询来验证数据是否存在,确保你的模型和数据库中的数据是一致的。

这样处理后,理论上应该能查询到 Goods 的值。如果仍有问题,建议调试或打印关键变量,检查数据流程。

标签:
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有