mysql - 从有条件的 gorm 中检索多对多结果
问题描述
例如这是我的模型
type User struct {
gorm.Model
Languages []Language `gorm:"many2many:user_languages;"`
}
type Language struct {
gorm.Model
Name string
}
我想获得有英语的用户。如何设置条件?我已经尝试过了,但它不起作用:
db.Preload("Languages").Where("Language.Name = ?", conditionVal).Find(&users)
解决方案
您可以从语言预加载用户
language := Language{}
db.Where("Name = ?", langVal).Preload("Users").Find(&language)
users := language.Users
您的模型也需要反向引用
type User struct {
gorm.Model
Languages []*Language `gorm:"many2many:user_languages;"`
}
type Language struct {
gorm.Model
Name string
Users []*User `gorm:"many2many:user_languages;"`
}
官方文档:预加载条件
推荐阅读
- java - 在 maven 中添加了 Randoop 插件以生成单元测试。并且卡在了这个错误中
- windows - PHP 5.6 和 Plesk 中的 .htaccess
- php - PHP从特殊字符读取TXT文件
- javascript - 使用 three.js 和 React 使用 DOM 像素迭代定位球体
- python-xarray - xarray apply_ufunc 获取每个变量的最小值和最大值
- c# - WPF DataGrid 禁用基于值的单元格编辑
- typescript - 使用默认实现影响返回类型的通用函数参数
- ios - 与声音一起播放时,与背景声音录制音频不同步
- oracle - 使用 Execute Immediate 和绑定的存储过程
- neo4j - 将变量值持久化到密码查询的其他部分