当前位置: 首页 > 知识库问答 >
问题:

将两个gorm查询转换为一个

柳俊逸
2023-03-14

我有以下型号

type Instance struct {
    gorm.Model
    Name               string `gorm:"index:idx_name_and_group,unique"`
    UserID             uint
    GroupID            uint `gorm:"index:idx_name_and_group,unique"`
    ...
}

type Group struct {
    gorm.Model
    Name                 string `gorm:"unique;"`
    Instances            []Instance
    ...
}

我试图通过名称和组名称获得一个实例。

我可以用下面的代码来做

func (r instanceRepository) FindByName(groupName string, instanceName string) (*model.Instance, error) {
    var instance *model.Instance
    var group *model.Group

    err := r.db.
        First(&group, "name = ?", groupName).Error
    if err != nil {
        return nil, err
    }

    err = r.db.
        Where("name = ? and group_id = ?", instanceName, group.ID).
        First(&instance).Error

    return instance, err
}

但是我想把它变成一个查询。对如何实现这一点有什么想法吗?

共有1个答案

邢洋
2023-03-14

您始终可以使用Joins函数进行SQL连接。大概是这样的:

func (r instanceRepository) FindByName(groupName string, instanceName string) (*model.Instance, error) {
    var instance *model.Instance

    err := r.db.
        Joins("INNER JOIN groups g ON g.id = instances.group_id").
        Where("g.name = ? AND instances.name = ?", groupName, instanceName).
        First(&instance).Error
    if err != nil {
        return nil, err
    }

    return instance, err
}
 类似资料:
  • 我有两个表TABLE_A,列名为COLUMN1 COLUMN2 COLUMN3 COLUMN 4 COLUM5 abc def ghi jkl mno 123 456 789 001 121 TABLE_B列名为COLUMN6 COLUMN7,其数据为 专栏5 124 第4列bca 第3列aaa 列5 BBB 所以我将Table_A的列名作为Table_B中的数据 所以我想在一个查询中做这样的事情

  • 我有两个枚举,它们实现了如下相同的接口:- 名为SystemA和SystemB的两个枚举正在实现此接口。 我想要像这样应用getConfigFunction:- 但它会抛出编译时错误,因为形成的流的类型为:Config[]。所以我尝试了以下修改:- 但这也失败了,因为我还需要修改forEach部分。有人能帮忙吗?我该如何修改forEach部分,或者我该如何使用map()/flatmap()函数,这

  • 问题内容: 结合这两个查询的正确语法是什么? 和 我试过了: 但我收到“ UNION和ORDER BY的用法不正确”。 编辑 此外,我希望结果在一行中返回。这样我就可以访问php中的值,例如 根据西蒙的建议,我不应该使用UNION,因为我想返回一行数据 问题答案: 您不能先进入,然后再进入。 编辑 但是你可以 将ORDER BY或LIMIT应用于单个SELECT,将子句放在包围SELECT的括号内

  • 问题内容: 我想将以下SQL查询转换为Elasticsearch之一。谁能帮上忙 我尝试了以下方法: 但不确定我是否做对了,因为它无法验证结果。似乎要在聚合内添加查询。 问题答案: 假设您使用Elasticsearch 2.x,则有可能在Elasticsearch中 具有 -semantics。我不知道2.0之前的可能性。 您可以使用新的Pipeline Aggregation Bucket Se

  • 问题内容: 多亏了Erwin Brandstetter在我之前的问题“具有has_many关系的订单”中的帮助,我的SQL查询才能正常工作。 如何将该SQL转换为ActiveRecords或AREL查询以在范围中使用? 我最近来的是在朋友的帮助下… …这给了我一个错误: 更新: 我之前的问题对相关的架构和查询有完整的描述。但是基本上Articles have_many Metrics和一个Metr

  • 问题内容: 实际上,我有1个查询,但无法将其转换为CakePHP查询格式。 当我将此查询转换为CakePHP时,会出现如下错误: 问题答案: 您可以轻松地在Cake上运行直接SQL查询,例如:$ this-> Picture-> query(“ SELECT * FROM pictures LIMIT 2;”); 或尝试与此类似的东西: ..确保您已正确链接Esl_Userresults和Esl_