Go 如何使用SQLBoiler执行多对多查询

Go 如何使用SQLBoiler执行多对多查询,go,orm,many-to-many,sqlboiler,Go,Orm,Many To Many,Sqlboiler,我在用我的golang ORM 我试图查询一个用户及其所有角色,为此,我有以下表格: 角色: role_id desc name 1 basic basic 用户: user_id password user_name created_at updated_at updated_by ... 1 ... ... ... ... ... 用户角色: id user_id rol

我在用我的golang ORM

我试图查询一个用户及其所有角色,为此,我有以下表格:

角色:

role_id  desc   name
1        basic  basic
用户:

user_id password    user_name   created_at  updated_at  updated_by ...
1        ...        ...         ...         ...         ...  
用户角色:

id  user_id role_id
1   1       1
foreign keys: user_id, role_id
我尝试用以下方式查询(不使用sql查询)用户及其所有角色:

func getUserRoles(user *models.USERS) (models.USERROLESSlice, error) {
    if roles, err := user.UserUSERROLESS().All(context.Background(), DB); err != nil {
        infra.LogError("failed to query user roles", err)
        return nil, err
    } else {
        return roles, nil
    }
} 
这给了我models.USERROLESSlice,而不是models.ROLES的切片 包含我的连接表

或仅使用:

   if usr, err := models.USERSS(qm.Where(query, req.Email, req.Password),qm.Load("ROLES")).One(context.Background(), DB); err != nil && err.Error() == "sql: no rows in result set" {
        infra.LogInfo(fmt.Sprintf("no result for %s", req.Email))
        return nil, nil
    } 
如果我有任何其他对象关系,我会这么做 但这些都没有给我我期望的结果

有人知道什么是简单而优雅的方法吗

编辑: 现在,我只是使用qm.SQL向前推进

    if roles, err := models.ROLESS(qm.SQL("SELECT roles.* FROM user_roles INNER JOIN roles ON user_roles.role_id = roles.role_id WHERE user_roles.user_id=@uid", user.UserID)).All(context.Background(), DB); err != nil {
    infra.LogError("failed to query user roles", err)
    return nil, err
}
但我还是在寻找优雅的方式,您可以在以下链接中找到一些示例:

err.Error()==“sql:结果集中没有行”
->
err==sql.ErrNoRows
您能告诉我们您的模型是什么样子吗?基于库的文档,看起来您应该能够执行类似于
user.ROLESS.All()
的操作。我更新了我的帖子,在顶部添加了链接,在末尾添加了一个链接。我能够找到库,并根据它的文档对您应该能够执行的操作进行了评论。你能告诉我们你生成的模型是什么样子吗?@Gavin首先谢谢你,遗憾的是,复制粘贴它有点长,但是使用简单的多对多方案很容易模拟。如果您安装了sqllite,我可以编辑我的帖子并添加所需的sql以生成必要的表