You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用GORM查询满足过滤条件的多对多关联数据

解决方案

以下是两种可直接使用的实现方式:

方案1:使用GORM关联查询(最简单)

直接基于你已经查询到的Asset对象,加载关联的CommandQuery时添加过滤条件即可:

var validCommands []*CommandQuery
// 过滤关联对象中active为true的记录
err := db.Model(&result).Where("active = ?", true).Association("CommandQueries").Find(&validCommands)
if err != nil {
    // 自行处理查询错误
}

方案2:手动联表查询

如果需要更灵活的条件控制,可以直接关联多对多中间表查询:

var validCommands []*CommandQuery
err := db.Joins("JOIN command_asset ca ON ca.command_query_id = command_queries.id").
    Where("ca.asset_id = ?", result.Id).
    Where("command_queries.active = ?", true).
    Find(&validCommands).Error
if err != nil {
    // 自行处理查询错误
}

注意事项

  • GORM默认将结构体名转为蛇形复数作为表名,CommandQuery对应的默认表名为command_queries,如果你自定义了表名需要对应修改SQL语句中的表名
  • 如果你需要同时获取CommandQuery关联的其他数据,可以在查询链上添加Preload方法加载对应关联字段

内容的提问来源于stack exchange,提问作者Jean-Pierre GARNIER

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 18:15:03