mysql - 查询多对多 Unscoped 关联(已删除)
问题描述
我有一个带有自定义连接表的 gorm many2many 模型:
type Vehicle struct {
gorm.Model
Registration string
Users []User `gorm:"many2many:vehicle_users`
}
type VehicleUser struct {
gorm.Model
VehicleID uint
UserID uint
}
type User struct {
gorm.Model
Vehicles []Vehicle `gorm:"many2many:vehicle_users`
Name string
OIB int
}
我想查询所有已删除和未删除的用户及其关联,再次删除和取消删除。
(gorm 1.21.16) 和 MySql 8.0
当我进行这样的查询时:
u := User{}
db.Unscoped().Preload("Vehicles", func(db *gorm.DB) *gorm.DB {
return db.Unscoped()
}).Find(&u)
gorm 在后台进行 3 次 SQL 查询
[52.918ms] [rows:4] SELECT * FROM `users`
[14.314ms] [rows:3] SELECT * FROM `vehicle_users` WHERE `vehicle_users`.`user_id` IN (1,2,3,4) AND `vehicle_users`.`deleted_at` IS NULL
[0.576ms] [rows:2] SELECT * FROM `vehicles` WHERE `vehicles`.`id` IN (4,27)
问题在于连接表上的查询vehicle_users
,它只查询未删除的关联。我似乎找不到如何修改连接表上的查询以删除deleted_at
IS NULL 子句。正确的方法是什么?
解决方案
推荐阅读
- typescript - 如何使用 ts-node 运行带有 .ts 文件导入的 .ts 文件?
- javascript - 实现 DOM 和 JS 将 textarea 输入转换为 textarea 输出框
- python - glob- python 排序的文件列表
- c# - 如何在 .NET Core 3.1.1 中将 json 更改为 camelCase?
- centos7 - Certbot 在 httpd.conf 中不存在的行上给我语法错误
- r - 如何创建可重用的 plot_ly 函数?
- android - 背景屏幕可见性
- angular - 如何在 Angular 7 中创建一个不包含我的导航的组件?
- mysql - 如何从可用插槽和预订插槽中找到空闲插槽
- excel - 检查列中的重复项并突出显示它