首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何获得多对多数据关联

如何获得多对多数据关联
EN

Stack Overflow用户
提问于 2019-06-29 07:47:33
回答 1查看 181关注 0票数 1

我是Go gorm协会的新手。我有这样的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main

import (
    _ "database/sql"
    "fmt"

    _ "github.com/go-sql-driver/mysql"
    "github.com/jinzhu/gorm"
)

type User struct {
    ID   uint `gorm:"primary_key"`
    Name string
}

type Event struct {
    ID        uint `gorm:"primary_key"`
    EventName string
    Users     []User `gorm:"many2many:event_reviews;"`
}

type EventReview struct {
    UserID  uint
    EventID uint
    Rating  float64
    Review  string
}

func main() {
    db, _ := gorm.Open("mysql", "root:@tcp(127.0.0.1:3306)/test1?charset=utf8&parseTime=True")
    defer db.Close()
    db.DropTableIfExists(&EventReview{}, &Event{}, &User{})
    db.AutoMigrate(&User{}, &Event{}, &EventReview{})

    //All foreign keys need to define here
    db.Model(EventReview{}).AddForeignKey("user_id", "users(id)", "CASCADE", "CASCADE")
    db.Model(EventReview{}).AddForeignKey("event_id", "events(id)", "CASCADE", "CASCADE")

    user := User{Name: "John"}
    db.Create(&user)
    event := Event{EventName: "Learning Go"}
    db.Create(&event)
    eventReview := EventReview{UserID: user.ID, EventID: event.ID, Rating: 2.5, Review: "ExcelentEvent"}
    db.Create(&eventReview)

    //Fetching
    eventFetch := &Event{}
    db.Preload("Users").First(&eventFetch)
    fmt.Println(eventFetch)
}

我有struct User,Event,Event Review。事件与用户有多对多的关系。我已经阅读了gorm docs associaton Gorm associaton many to many,但我很难从事件评论中获得数据。

结果打印:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
&{1 Learning Go [{1 John}]}

预期结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
&{1 Learning Go [{1 John 2.5 ExcelentEvent}]}

如何得到预期的结果?我使用多对多关系表是错误的吗?

EN

回答 1

Stack Overflow用户

发布于 2019-06-29 08:16:09

使用相关方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.Model(&dm.User{}).Related(&dm.EventReview{}, "user_id")
res:=QueryByStructExample(dm.User{Email: "email@example.com})



 func QueryByStructExample(userStruct User) []User {
        var results []dm.User
        GormDB.Where(userStruct).Find(&results)
        return results
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56815932

复制
相关文章
为亚马逊S3提供SFTP连接
Amazon S3或Simple Storage Service,是一种低成本、基于云的对象存储服务,它通过合理的、按需付费的定价为用户提供几乎无限的存储空间。S3存储的经济性、可用性和灵活性的特点,使组织依赖S3来处理您可以想象的,从时间点备份到业务数据备份以及介于两者之间的所有内容的存储。
知行软件EDI
2021/07/23
1.7K0
保护 Amazon S3 中托管数据的 10 个技巧
在这篇文章中,我们将讨论 10 个良好的安全实践,这些实践将使我们能够正确管理我们的 S3 存储桶。
Khan安全团队
2022/01/18
1.5K0
certbot开启亚马逊EC2主机https
国内那么多云主机运营商, 你为何要买国外的主机呢, 你肯定在干些见不得人的勾当..
chuchur
2022/10/25
5080
基于Windows服务实现的亚马逊云S3文件上传
一、Amazon S3介绍 Amazon Simple Storage Service (Amazon S3) 是一种对象存储,它具有简单的 Web 服务界面,可用于存储和检索 Web 上任何位置、任意数量的数据。它能够提供 99.999999999% 的持久性,并且可以在全球大规模传递数万亿对象。 客户将 S3 用于批量存储库、“数据湖”,用于分析、备份和还原、灾难恢复和无服务器计算。许多原生云应用程序甚至使用 S3 作为主要存储。 借助 Amazon 的云数据迁移选项,客户可将大量数据轻松地移入或
跟着阿笨一起玩NET
2021/02/02
1.2K0
如何使用亚马逊对象存储AWS S3 SDK访问腾讯云存储COS
COS 提供了 AWS S3 兼容的 API,因此当您的数据从 S3 迁移到 COS 之后,只需要进行简单的配置修改,即可让您的客户端应用轻松兼容 COS 服务。本文主要介绍不同开发平台的 S3 SDK 的适配步骤。在完成添加适配步骤后,您就可以使用 S3 SDK 的接口来访问 COS 上的文件了。
云存储
2020/05/26
4.3K0
等级保护主机安全:CentOS入侵防范(一)
本篇文章主要想说一说我对入侵防范中前3个测评项的理解(对于centos系统而言),如果大家有其他的看法或者思路也可以在回复中提出,我也跟着学习学习。
FB客服
2019/09/17
1.3K0
等级保护主机安全:CentOS入侵防范(一)
在兼容亚马逊S3的第三方应用中使用COS的通用配置
Amazon Simple Storage Service(Amazon S3,下文简称 S3)是 AWS 最早推出的云服务之一,经过多年的发展,S3 协议在对象存储行业事实上已经成为标准。腾讯云对象存储 COS(下文简称 COS)提供了兼容 S3 的实现方案,因此您可以在大部分兼容 S3 应用中直接使用 COS 服务。本文将重点介绍如何将此类应用配置为使用 COS 服务。
云存储
2020/04/03
3.3K0
在兼容亚马逊S3的第三方应用中使用COS的通用配置
借助亚马逊S3和RapidMiner将机器学习应用到文本挖掘
本挖掘典型地运用了机器学习技术,例如聚类,分类,关联规则,和预测建模。这些技术揭示潜在内容中的意义和关系。文本发掘应用于诸如竞争情报,生命科学,客户呼声,媒体和出版,法律和税收,法律实施,情感分析和趋势识别。 在本篇博客帖中,你将会学习到如何将机器学习技术应用到文本挖掘中。我将会向你展示如何使用RapidMiner(一款流行的预测分析开源工具)和亚马逊S3业务来创建一个文件挖掘应用。亚马逊S3业务是一项易用的存储服务,可使组织在网页上的任何地方存储和检索任意数量的数据。 掘模型产生的结果可以得到持续的推导并
用户1737318
2018/06/05
2.6K0
使用新的存储文件跟踪功能解锁 S3 上的 HBase
CDP 运营数据库 (COD)是由 Apache HBase 和 Apache Phoenix 提供支持的实时自动扩展运营数据库。它是在 Cloudera 数据平台 (CDP) 公共云上运行的主要数据服务之一。您可以从CDP 控制台访问 COD 。
大数据杂货铺
2022/12/02
2K0
使用新的存储文件跟踪功能解锁 S3 上的 HBase
攻击本地主机漏洞(上)
翻译“CompTIA PenTest Certification All-in-One Exam Guide Exam2019.pdf” 第十章
顾翔
2022/09/23
1.2K0
攻击本地主机漏洞(上)
C#-clickonce部署和调用
ClickOnce 是一种部署技术,使用它可以用来进行应用程序的自动更新,也可以使用在浏览器中直接调用部署好的应用程序。
kdyonly
2023/03/03
5780
文件上传(三)基于windows主机的上上传
看看上面的代码都限制了多少吧,大小写,加空格,加字符串,黑名单,好多限制。。。。。
逍遥子大表哥
2021/12/17
1.8K0
文件上传(三)基于windows主机的上上传
如何在Ubuntu 18.04上保护Redis的安装
Redis是一个使用内存技术,NoSQL,键值缓存及存储,也可以保存到磁盘。它专为受信任环境中的受信任客户端设计,自身没有强大安全功能。这里是Redis官方网站的引用:
GeekZ
2018/08/07
1K0
【以太坊篇】-‘链上数据的隐私保护’
好了,今天分享的是关于区块链外行人或者半内行人最关心的一个问题-“关于链上数据的隐私保护问题”。
帆说区块链
2022/04/26
7870
【以太坊篇】-‘链上数据的隐私保护’
快速创建软件安装包-ClickOnce
今天介绍使用ClickOnce制作软件安装包,首先我们先了解什么是ClickOne。
沙漠尽头的狼
2022/11/25
1.2K0
快速创建软件安装包-ClickOnce
怎么在区块链上保护隐私?
编者按:在12月3日的亚太区以太坊培训和交流Meetup深圳站上,Vitalik作了《怎么在区块链上保护隐私》的演讲,谈到了区块链上四种主要的保护隐私的手段,包括环签名和零知识证明。来看看吧。 作者:Vitalik
企鹅号小编
2017/12/26
2.3K0
怎么在区块链上保护隐私?
如何在Ubuntu 14.04上保护Nginx
即使使用默认设置,Nginx也是一个非常安全可靠的Web服务器。但是,有很多方法可以进一步保护Nginx。
编程男孩
2018/10/15
1.6K0
快速创建软件安装包-ClickOnce
今天介绍使用ClickOnce制作软件安装包,首先我们先了解什么是ClickOne。
沙漠尽头的狼
2022/11/03
9730
快速创建软件安装包-ClickOnce
SuSE Linux上修改主机名
临时修改使用hostname即可,格式为:hostname 新主机名。Hostname命令除可以临时修改主机名外,还可以用它来查看主机名,不带参数执行它,即为查看主机名。
一见
2018/08/10
6.9K0
如何使用Ubuntu 16.04上的Let's Encrypt保护Apache
本教程将向您展示如何在运行Apache作为Web服务器的Ubuntu 16.04服务器上设置Let's Encrypt的TLS / SSL证书。
新巴子
2018/10/19
1.9K0

相似问题

如何比较口语和参考录音-语言学习

23

语言学习语音识别工具

10

Pocketsphinx无法准确识别印度语言单词

112

用机器学习识别python中的声音(单词)

12

机器学习识别句子中的重要单词

118
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文