# #mysql #go #go-gorm
Вопрос:
У меня есть модель 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(amp;u)
горм делает 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.
Как правильно это сделать?