gorm关联查询请教

underway2014 · 2020-07-06 10:11:02 · 2367 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2020-07-06 10:11:02 的主题,其中的信息可能已经有所发展或是发生改变。

有如下两张表

type Activity_record struct {
    BaseModel 
    Activity_config_id int `json:"activity_config_id"`
    Activity_config Activity_config `json:"ac" gorm:"goreignkey:Activity_config_id"`
    Share_user_id int `json:"share_user_id"`
    Receive_user_id int `json:"receive_user_id"`
}


type Activity_config struct {
    BaseModel
    Mgr_user_id int `json:"mgr_user_id"`
    Type int8 `json:"type"`
    User_restrict int8 `json:"user_restrict"`
    Title string `json:"title"`
}

查询语句,用的gorm:

model.DB.Preload("Activity_config", func(query *gorm.DB) *gorm.DB {
        return query.Select("id, type")
    }).Select("activity_records.id,activity_records.activity_config_id").Find(&list)

打印的sql语句: [2020-07-06 09:54:57] [1.00ms] SELECT activity_records.id,activity_records.activity_config_id FROM activity_records
[2020-07-06 09:54:57] [0.99ms] SELECT id, type FROM activity_configs WHERE (id IN (35))

返回数据:

[
    {
        "id": 4,
        "activity_config_id": 35,
        "ac": {
            "id": 35,
            "type": 1,
            "title ": ""
        },
       "share_user_id ": 0,
      "receive_user_id ": 0
    }
]

如何将返回数据中的无用字段方便去掉呢?(如:title,share_user_id,receive_user_id) 但是看起来它执行了两次查询,又没有别的什么方式让生成如下的sql语句,并且返回数据结构如上面的结构:如

select  ar.*, ac.* from activity_records ar inner join activity_configs ac on ac.id = ar.Activity_config_id

刚开始看golang,大佬些指点下


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2367 次点击  
加入收藏 微博
2 回复  |  直到 2022-01-26 15:36:52
lgnice
lgnice · #1 · 5年之前
xwszt
xwszt · #2 · 3年之前

不知道我理解的对不对,你要的返回结果是json显示的,对吧? 如果这样,你在json的tag里,加上omitempty,例如

Title string `json:"title, omitempty"`

这样如果没有赋值,这个就不会json序列化出来了

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传